MySQL插入僧伽罗语字符显示为问号的问题求助
解决MySQL命令行插入僧伽罗语显示问号的问题
我之前也碰到过类似的字符乱码问题,其实核心原因是MySQL命令行客户端的字符集配置没匹配UTF-8,导致僧伽罗语字符在传输到数据库的过程中被错误转码成问号。而phpMyAdmin因为默认已经配置了正确的字符集参数,所以能正常显示和存储字符。给你几个可行的解决办法:
一、临时解决(单次会话生效)
如果你只是临时需要在命令行操作僧伽罗语数据,可以用以下两种方式:
连接MySQL时指定字符集
启动命令行客户端时直接加上字符集参数:mysql -u 你的用户名 -p --default-character-set=utf8mb4(推荐用
utf8mb4而不是utf8,因为MySQL里的utf8实际是utf8mb3,只支持3字节的UTF-8字符,utf8mb4才是完整的UTF-8,能覆盖更多语言字符)进入命令行后手动设置字符集
已经进入MySQL命令行的话,执行以下SQL语句:SET NAMES utf8mb4; SET CHARACTER SET utf8mb4;之后再执行插入或查询操作,就能正常显示僧伽罗语了。
二、永久解决(全局生效)
修改MySQL的配置文件,让客户端和服务端默认都使用UTF-8字符集:
1. 找到配置文件
- Linux系统:通常是
/etc/my.cnf或/etc/mysql/my.cnf - Windows系统:通常是
MySQL安装目录/my.ini
2. 添加/修改配置项
在配置文件中对应段落添加以下内容:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
3. 重启MySQL服务
修改完配置后,重启MySQL服务让配置生效:
- Linux:
sudo systemctl restart mysql - Windows:在服务管理器中找到MySQL服务,重启它
三、额外检查项
确认终端编码
你的命令行终端本身也要支持UTF-8编码:- Linux/macOS终端:在终端偏好设置里把编码设为UTF-8
- Windows CMD:执行
chcp 65001切换到UTF-8编码
验证数据库和表的字符集
虽然你已经设置了数据库和表的字符集,但可以再确认一下:-- 检查数据库字符集 SHOW CREATE DATABASE sinhala_test; -- 检查表字符集 SHOW CREATE TABLE category;确保输出里的
CHARACTER SET是utf8mb4或utf8,COLLATE是对应的排序规则。
按以上步骤操作后,再插入僧伽罗语数据,命令行查询应该就能正常显示字符了。
内容的提问来源于stack exchange,提问作者user3733831
相关产品推荐
相关产品推荐

