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

MySQL查询中文‘温’显示问号,其余中文正常的问题解决

问题排查与解决步骤

可能原因

单个中文显示问号,核心是字符集/排序规则的局部不兼容,常见场景包括:

  • 表或字段的字符集未覆盖该汉字的编码范围(比如MySQL 5.7的utf8是3字节编码,部分生僻字/特殊汉字需4字节编码支持)
  • 数据库连接时的字符集设置与存储字符集不匹配
  • 插入或查询过程中出现编码转换异常

排查操作

  1. 检查数据库、表、字段的字符集配置
    执行以下SQL命令确认字符集:

    -- 查看数据库字符集
    SHOW CREATE DATABASE your_db_name;
    -- 查看表字符集
    SHOW CREATE TABLE your_table_name;
    -- 查看目标字段的字符集
    SHOW FULL COLUMNS FROM your_table_name LIKE 'your_column_name';
    

    重点关注是否使用了utf8(3字节)而非utf8mb4(完整4字节UTF-8),后者支持所有Unicode字符。

  2. 验证连接字符集一致性
    查看当前连接的字符集参数:

    SHOW VARIABLES LIKE '%character_set%';
    

    确保character_set_client、character_set_connection、character_set_results三个参数值与存储字符集一致(比如均为utf8mb4)。

  3. 检查字符编码存储状态
    手动插入“温”并查看其十六进制编码:

    INSERT INTO your_table_name (your_column_name) VALUES ('温');
    SELECT HEX(your_column_name) FROM your_table_name WHERE your_column_name = '温';
    

    “温”的标准UTF-8编码为E6B8A9,如果查询结果是3F(问号的ASCII码),说明插入阶段就已出现编码错误。

解决方法

  1. 将字段/表字符集改为utf8mb4
    如果当前使用utf8,执行以下命令修改:

    -- 修改表级字符集
    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    -- 单独修改字段(表级修改不生效时使用)
    ALTER TABLE your_table_name MODIFY COLUMN your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  2. 修正连接字符集设置

    • 命令行连接时指定字符集:mysql -u username -p --default-character-set=utf8mb4
    • 应用程序连接字符串中添加字符集参数(比如JDBC串添加useUnicode=true&characterEncoding=utf8mb4)
  3. 配置全局默认字符集
    修改MySQL配置文件(my.cnf或my.ini),添加或更新以下配置,重启服务生效:

    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    [client]
    default-character-set=utf8mb4
    

操作失误排查

基本不属于操作失误,多是字符集配置遗漏:

  • 建表/字段时误选utf8而非utf8mb4
  • 连接数据库时未指定正确的字符集,导致编码转换错误
  • 使用的客户端工具字符集设置与MySQL不匹配

内容的提问来源于stack exchange,提问作者Tzu-Chao Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:08:14