首批通过分布式安全可靠测评,为关键业务系统打造
中文字符乱码
更新时间:2026-07-08 08:01
问题现象
Windows 系统下 Web 版 ODC 查询结果集时,生僻字显示乱码
Windows 系统下,使用 Web 版 ODC 查询 Oracle 租户的数据(UTF8 字符集)时,生僻字显示异常: 李㭎显示为李□、邓显示为邓□。
通过 OBClient 查询未显示乱码:
obclient> select aac003 from ZC01_A where AAC003='李㺭言';
+-----------+
| AAC003 |
+-----------+
| 李㺭言 |
| 李㺭言 |
| 李㺭言 |
+-----------+
3 rows in set (1.64 sec)
obclient> select aac003 from AC29 where YAC005='C21725577';
+-----------+
| AAC003 |
+-----------+
| 李明 |
+-----------+
1 row in set (0.01 sec)
obclient> select aac003 from zc01_a where ZCA001='1444600';
+--------+
| AAC003 |
+--------+
| 邓 |
+--------+
1 row in set (0.00 sec)
macOS 系统下 ODC 查询结果集时,中文字符显示乱码
macOS 系统下,OBserver 的字符集编码为 GBK 时,SQL 窗口中执行 SQL 语句时,返回的结果中出现中文字符乱码。
命令行窗口的结果集中出现中文字符乱码
Windows 系统下,OBserver 的字符集编码为 utf8mb4 时,命令行窗口中执行 SQL 语句时,返回的结果中出现中文字符乱码,且插入中文数据时报错 Incorrect string value。

问题原因
Windows 系统下缺少字体,需要安装并设置 IE 默认字体。
数据迁移时,OMS 同步链路的编码配置不正确。
租户使用 GBK 编码时不支持生僻字对应的编码值,而 ODC 目前通过 UTF8 编码连接数据库,无法正确转码。
ODC 的命令行窗口集成了 OBClient 工具,需要通过 OBClient 工具将数据库默认的客户端字符集调整成与操作系统字符集一致。Windows 操作系统的默认字符编码为 GBK,Windows 操作系统不能自动匹配 OBClient 客户端的字符编码,导致 OBClient 客户端与 Windows 操作系统字符集不一致:
位置 Linux Mac Windows SQL 窗口 UTF8 UTF8 UTF8 命令行窗口 UTF8 UTF8 GBK 数据库认为的客户端编码可以通过数据库参数查看,查看方法:
show variables like '%character_set_c%';具体参数包括:
character_set_client:客户端编码。character_set_connection:连接编码。character_set_results:结果集编码。
解决方法
将 Windows 系统下的浏览器字体设置为 Hiragino Sans GB 或者 monospace:打开 Google 浏览器 > 设置 > 外观 > 自定义字体 > 标准字体选择 Hiragino Sans GB 即可。
注意
需要关闭所有 ODC 连接后,再重新打开。
如果出现 GBK 租户乱码问题,可以将参数
character_set_client、character_set_connection和character_set_results的字符集编码设置为utf8mb4。在 ODC 的 运维管理 > 全局变量 > 会话属性 中修改会话级别编码。

在命令行窗口中,调整数据库认为客户端使用的字符集,将其与实际客户端的字符集兼容。
set names utf8mb4;调整完成后,在当前 session 内再执行 SQL ,查看结果集时即可避免中文乱码问题。