You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL配置utf8mb4后特定日文汉字显示为问号问题排查求助

问题排查方向

1. 字符集全链路匹配检查

「𣘺」属于Unicode扩展区汉字,UTF-8编码占4字节,常用的3字节日文字符能正常存储仅说明基础字符兼容,4字节字符要求从连接、服务端到字段的所有链路都启用utf8mb4才可以正常处理:

  • 检查连接会话字符集:执行SQL SHOW VARIABLES LIKE '%character%';,确认character_set_client、character_set_connection、character_set_results三个变量值均为utf8mb4。如果不是,建立连接后主动执行SET NAMES utf8mb4;,或在连接驱动配置中显式指定字符集为utf8mb4,禁止配置为utf8(MySQL原生utf8为阉割版utf8mb3,仅支持3字节以内字符)。
  • 检查字段级字符集:仅修改表级字符集不会自动同步已有字段的字符集,执行以下SQL单独修改目标字段:
    ALTER TABLE 你的表名 MODIFY 目标字段名 原字段类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    也可以执行SHOW FULL COLUMNS FROM 你的表名;确认字段的字符集和排序规则是否为utf8mb4开头。

2. MySQL服务端配置检查

编辑CentOS 7上的MySQL配置文件/etc/my.cnf,添加以下配置后重启MySQL服务生效:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'

[client]
default-character-set = utf8mb4

3. 操作系统与终端配置检查

  • 执行locale命令查看系统默认字符集,确认LANG、LC_ALL变量值为UTF-8格式(如ja_JP.UTF-8、zh_CN.UTF-8均可),如果不是可以修改/etc/locale.conf后重启系统生效。
  • 确认你连接CentOS使用的SSH终端编码设置为UTF-8,避免输入、回显阶段就出现编码转换错误。
  • 验证存储是否正常:执行SELECT HEX(目标字段名) FROM 你的表名 WHERE 条件;查询该字符的十六进制值,正确值应为F0A398BA,如果返回3F(问号的ASCII码)说明写入阶段就出现了转码丢失,如果返回正确值说明是终端/客户端显示问题,存储本身没有异常。

内容的提问来源于stack exchange,提问作者Fancy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:57:03