MySQL 表中的中文显示为问号

文章目录

  • 1 问题:MySQL数据库中的中文显示为问号
  • 2 解决思路
    • 2.1 查看字符集
    • 2.2 修改my.ini
    • 2.3 重启mysql
    • 2.4 验证字符集生效
  • 3 其他
    • 3.1 修改表的编码格式
    • 3.2 连接层的编码格式

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

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

查看表,中文显示如下:
MySQL 表中的中文显示为问号_第1张图片

2 解决思路

2.1 查看字符集

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

show variables like '%character%';

查询结果如下:
MySQL 表中的中文显示为问号_第2张图片
有字符集为非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%';

可以看到查询结果中,字符已经生效;
MySQL 表中的中文显示为问号_第3张图片

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;

你可能感兴趣的:(MySQL)