先说答案
右键当前连接的Edit Connection
,选择Advanced
选项卡将Encoding
选为Auto
问题描述
双击查看表数据时,中文显示为???
,用命令查也是一样。
排错过程
远程服务器网站运行完全ok。
# 查询编码
show variables like 'char%'
服务器端查询,结果正常,均为utf8
。
客户端navicat查询,发现出现部分编码为latin1
。
此时可以确定问题出在navicat上。
通过设置有问题的值为uft8
后,例:
set character_set_results=utf8
通过命令查询中文显示正常,但是界面显示还是有问题。
更改navicat中数据库的字符编码,无效。
连接的字符编码也是utf-8
偶然在一篇文章中看到,将连接编码格式改为Current Windows Codepage
。发现自己的navicat里没有这个选项,于是就选择了Auto
,发现成功了。
原因分析
重新show variables like 'char%'
了一下,发现刚才出现的latin1
的变量原来都是utf8mb4
,在连接里没有这个选项,把值设定成utf-8后面的数据库就识别不了别的字符集了。
小结
这可能只是一个很偶现的问题,更多的中文乱码出现在没有统一字符编码的问题上。希望本文能多多少少帮到你。