MySQL中字符ō显示为?的问题求助(Win11+MySQL8.0.32)
问题描述
- 系统环境:Windows 11
- MySQL版本:
Ver 8.0.32 for Win64 on x86_64 (MySQL Community Server - GPL) - 操作流程:
- 通过MySQL Shell创建数据库:
CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE test_db; - 创建示例表:
CREATE TABLE test_tbl ( title VARCHAR(100) NOT NULL ); - 插入含特殊字符
ō的测试数据:INSERT INTO test_tbl(title) values('Bashō');
- 通过MySQL Shell创建数据库:
- 异常情况:查询结果中
ō始终显示为?,更换utf8mb4_general_ci、utf8mb4_0900_ai_ci等排序规则后问题仍未解决。
解决方法
1. 显式设置连接字符集
连接数据库后执行以下命令,强制客户端与服务器使用utf8mb4字符集交互:
SET NAMES utf8mb4;
也可以在启动MySQL Shell时直接指定字符集参数:
mysqlsh --default-character-set=utf8mb4 -u 你的用户名 -p
2. 修改MySQL配置文件永久生效
找到Windows下MySQL的配置文件(通常路径为C:\ProgramData\MySQL\MySQL Server 8.0\my.ini),在对应段落添加配置:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
保存后重启MySQL服务,确保配置生效。
3. 检查客户端字符集变量
在MySQL Shell中执行以下命令,查看当前字符集配置:
SHOW VARIABLES LIKE '%character_set%';
需确保以下变量值为utf8mb4:
character_set_clientcharacter_set_connectioncharacter_set_results
若不符,执行SET NAMES utf8mb4;临时修正,或通过配置文件永久设置。
4. 调整Windows终端编码
Windows命令提示符/PowerShell默认编码可能不是UTF-8,导致显示异常。先执行以下命令切换终端编码:
chcp 65001
再启动MySQL Shell执行查询,特殊字符即可正常显示。
内容的提问来源于stack exchange,提问作者Coldchain9
相关产品推荐
相关产品推荐

