MySQL 表中的中文显示为问号

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_43277055/article/details/89372362

操作系统:Windows
MySQL版本:MySQL Server 5.5

1. 问题:MySQL数据库中的中文显示为问号

查看表,中文显示如下:
在这里插入图片描述

2. 解决思路

2.1. 查看字符集

执行如下查询语句,查看字符集;

show variables like '%character%';

查询结果如下:
在这里插入图片描述
有字符集为非utf-8,导致中文显示异常;

2.2. 修改my.ini

如果选择默认安装路径,配置文件应该在如下路径:
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
修改mysql的my.ini文件中的字符集键值(注意配置的字段细节):
1、在[client]里增加或修改default-character-set字段,如下:

[client]
default-character-set=utf8

2、在[mysql]里增加或修改default-character-set字段,如下:

[mysql]
default-character-set=utf8

3、在[mysqld]里增加或修改改character-set-server字段,如下:

[mysqld]
character-set-server=utf8

2.3. 重启mysql

以管理员身份运行cmd.exe,进行如下操作:

D:\> net stop mysql
MySQL 服务正在停止..
MySQL 服务已成功停止。

D:\> net start mysql
MySQL 服务正在启动 ........
MySQL 服务已经启动成功。

2.4. 验证字符集生效

执行如下查询语句,查看字符集;

show variables like '%character%';

可以看到查询结果中,字符已经生效;
在这里插入图片描述

3. 其他

3.1. 修改表的编码格式

查询表的编码

show create table tablename(数据库名.表名);

修改方法:

ALTER DATABASE 'database' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE 'table' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  

此句把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集

3.2. 连接层的编码格式

如果上面的都修改了还乱码,那剩下问题就一定在connection连接层上。解决方法是在发送查询前执行一下下面这句(直接写在SQL文件的最前面):

SET NAMES 'utf8'; 

它相当于下面的三句指令:

SET character_set_client = utf8; 
SET character_set_results = utf8; 
SET character_set_connection = utf8;

猜你喜欢

转载自blog.csdn.net/weixin_43277055/article/details/89372362
今日推荐