版权声明:本文为博主原创文章,未经博主允许不得转载。 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;