MySQL 表中的中文显示为问号


操作系统: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;
  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值