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

MySQL8.0使用utf8mb4时CHAR函数返回十六进制而非特殊字符原因咨询

问题原因
  • 你预期得到的Çüéâäàåçêë是Latin1(ISO-8859-1)字符集下字节值128~137对应的字符,而你当前MySQL全局配置的字符集为utf8mb4,单字节值大于127的内容不属于utf8mb4的有效单字节字符,无法直接被解析为可见字符。
  • MySQL的CHAR()函数默认返回二进制字符串,未显式指定字符集时,查询结果会直接返回原始十六进制字节值0x80818283848586878889,不会自动转换为你预期的特殊字符。
解决方法

方法1:显式指定CHAR函数的字符集

在查询时直接指定用Latin1解析对应字节,即可返回预期结果,语句如下:

SELECT CONVERT(CHAR(128,129,130,131,132,133,134,135,136,137 USING latin1)) AS char_result;

方法2:临时调整会话级字符集

如果需要多次执行同类查询,可以临时修改当前会话的客户端字符集,操作完成后再改回原有配置即可:

-- 临时设置会话客户端字符集为latin1
SET SESSION character_set_client = latin1;
-- 执行查询即可得到预期结果
SELECT CHAR(128,129,130,131,132,133,134,135,136,137);
-- 操作完成后恢复为utf8mb4,避免影响其他业务
SET SESSION character_set_client = utf8mb4;

注意:不要随意修改全局级别的字符集配置,避免造成其他业务数据读写异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:36:00