MySQL 使用mycli查询表中文乱码

使用MySQL直接查询表结构,中文正常显示,但是使用mycli命令查询表结构,就会出现中文乱码

img

一步一步来,
你先看一下你的表结构,
show create table table_name;
看一下是不是创建表的时候表或者列指定了不同的编码,导致表的编码和数据库级别不一致,从而乱码。

归根结底还是因为Windows无论是终端还是命令提示符都是 GBK, 你可以采用我找到的方法,亲测可以解决.
打开控制面板-区域-管理

img


点击「更改系统区域设置」,将 UTF-8那个 勾选上,重启终端就可以解决了

因为cmd的默认编码方式是gbk
你可以修改cmd的编码方式,修改为utf-8

你这是在什么环境下?数据库字符集是什么?
我自己测试,如果数据库是utf8mb4,在windows下使用pip3安装mycli后,不修改任何配置,登录数据库查询中文字段不会显示乱码

img


从这个乱码的表现来看,的确是把UTF-8的字符当成了GBK字符识别了,因为UTF-8一个汉字是3个字节,GBK一个汉字是2个字节,所以"男"就变成了一个汉字加一个问号(半个字)。
先确认一下你的mycli是不是最新版本,可以使用pip3重新安装一下,还有你python环境的默认字符集是否为utf8
另外,可以尝试在连接数据库时增加一个参数--charset,比如

mycli -u root -h localhost -P 3306 --charset=utf8mb3

以上方式来自mycli的github上的bug修复记录

但我不确定这个方法是否有效,因为我这里不管怎么改都不会乱码。。。


在mycli官方文档中有介绍,mycli的默认字符集是取的mysql客户端配置信息里的,即 ".my.cnf"文件中 client 的配置,因此还可以检查一下你本机这个文件里配置的是什么
官方文档

img

img