Navicat连ClickHouse中文显示问号或方块的根本原因是连接未显式声明UTF-8编码,需在连接字符串中添加?charset=UTF-8(JDBC)或&charset=UTF-8(ODBC/原生),并确保驱动版本支持(clickhouse-jdbc 0.3.2+),同时SQL编辑器编码设为UTF-8。Navicat 连 ClickHouse 中文显示问号或方块?先看连接层编码根本原因不是 clickhouse 服务端没设 utf8,而是 navicat 建立连接时没告诉 clickhouse:"我要用 utf-8 传数据"。clickhouse 默认按 utf-8 解析,但 navicat 的 jdbc 或原生协议连接若未显式声明编码,会 fallback 到系统 locale(比如 windows 上是 gbk),导致握手阶段就错位。实操建议:在 Navicat 新建或编辑 ClickHouse 连接时,点开 高级 选项卡 → 找到 Connection String(连接字符串)输入框在已有参数后追加:?charset=UTF-8(JDBC 驱动)或 &charset=UTF-8(ODBC/原生协议,视驱动而定)如果用的是 clickhouse-jdbc(推荐),完整示例:jdbc:clickhouse://127.0.0.1:8123/default?charset=UTF-8&useUnicode=true改完务必点 测试连接,不是只保存------很多乱码问题改了不重连根本无效ClickHouse 服务端的 charset 配置其实不控制客户端通信很多人去翻 /etc/clickhouse-server/config.xml,想找 <charset> 或类似字段,白忙。ClickHouse 本身没有"服务端字符集开关"这种设计:它只认字节流,只要客户端发来的是合法 UTF-8 字节,它就存;返回时也原样发回。所谓"服务端编码"其实是客户端和协议的事。真正要检查的只有两处:SELECT * FROM system.settings WHERE name LIKE '%charset%' ------ 结果为空才正常,有值反而可能被旧配置误导SHOW CREATE TABLE 查表 DDL,确认 ENGINE 后没带奇怪的 CHARSET=xxx(ClickHouse 表引擎不支持这个语法,写了会报错)如果用 MySQL 兼容模式 接入(比如通过 mysql_port),需额外确认 mysql_port 对应的 tcp_port 配置里没启用 skip_utf8_check(默认关着,别动)INSERT 中文数据进不去?重点查 Navicat 的 SQL 执行模式即使连接字符串加了 charset=UTF-8,在 Navicat 里直接写 INSERT INTO t VALUES ('中文') 仍可能失败,错误信息常是:Code: 62. DB::Exception: Cannot parse string... 或更隐蔽的截断(只存前几个字)。这是因为 Navicat 默认用"语句执行"而非"脚本执行",对非 ASCII 字符的编码处理不稳定。解决方式很具体: 博特妙笔 公职人员公文写作平台,集查、写、审、学为一体。
相关推荐
李兆龙的博客7 小时前
问津集 #26:Lakebase——Postgres 的版本化页面存储、数据库分支与计算弹性数字融合7 小时前
透明化视频三维矿山井下照明重建技术yi0117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”Marst Code9 小时前
上位机开发日记 · 第 2 篇 · 架构先行:六层分层与边界倔强的石头_9 小时前
聊聊金仓KFS:一款把数据同步软件做扎实的产品闲云野鹤在人间9 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解禾小西9 小时前
Redis:从两大维度和三大主线建立知识体系李日华大战鸡红9 小时前
FOC状态空间方程模型推导(学习记录)禾小西10 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?数据库小学妹10 小时前
数据共享交换平台选型:交换方式对比与避坑指南