Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法

时间:2022-01-31 06:48:08

在QQ群里问了一些高手,同时参考了这篇文章:http://huangyunbin.iteye.com/blog/1113983,终于把这个问题搞定了。

首先,我用的是zip包的Mysql,直接解压使用的,网上说修改my.ini或者my.cnf在我机器上根本就找不到。但是my.ini这个东西是可以自己添加的。将mysql目录中的my-default.ini文件复制一份(原来的模板还是留一份不要乱动的好),重命名为my.ini。打开my.ini,在最后添上如下两行:

[mysql]
default-character-set=utf8

保存。同时要检查 ./data/performance_schema目录下的db.opt文件中有这样两行:

default-character-set=utf8
default-ollation=utf8_chinese_ci

之后是在数据库里进行设置。在mysql中输入

1 mysql> show variables like ''char%'';

可以看到我的数据库中字符集是酱婶的:

Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法

遵照大部分网友的建议,除了filesystem那个binary不动,其它全部改成utf8好了。

1 MYSQL>set character_set_client = 'utf8';
2 MYSQL>set character_set_connection = 'utf8';
3 MYSQL>set character_set_database = 'utf8';
4 MYSQL>set character_set_results= 'utf8';
5 MYSQL>set character_set_server='utf8';

OK。可以再次执行show variables like ''char%'';查看修改结果。现在字符集都是UTF-8了。

最后一步,要修改之前乱码的表,将字符编码也修改为UTF-8:

1 MYSQL>alter table 表名 modify 列名 字段类型 character set utf8;

这样就完成啦。再select一下之前的表,中文是不是都变过来了?