从MySQL数据库获取中文显示乱码解决方案

参考链接:https://www.cnblogs.com/jasonzeng/p/8341445.html.
参考链接:https://bbs.csdn.net/topics/390881914

显示乱码有许多原因:
这里主要是MySQL数据库中 因为【编码不统一】造成的
Latin1是ISO-8859-1的别名,有些环境下写作Latin-1,最终要改为utf-8
在数据库中输入查询命令:
修改成功后的查看界面:
这张图来之不易
登录MySQL : mysql -u root -p
回车
输入密码
输入:show variables like ‘%char%’ ; #分号别忘了

如果您之前使用 set character_set_XXX=utf8 没效果,请对配置文件进行配置!!

我的默认my.ini在 C:\ProgramData\MySQL\MySQL Server 5.7下
在里面增加或修改:
#符号是配置文件的注释,在其后面的都不会执行!
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci #MySQL 5之后的版本要加这一行

因为我的MySQL安装位置在C:\Program Files\MySQL\MySQL Server 5.7,所以复制一份my.ini到 安装目录下。
复制my.ini
#拓展知识
[mysql] #客户端的工具,执行sql命令
[mysqld] #服务器端,用来启动MySQL数据库服务

重启MySQL57 服务。
再次运行命令工具:发现已经生效,真舒服!

注意点来了!
进入Navicat新建查询发现还是没变:
显示如下:
显示mysql的全部编码
是因为上面修改成功的对以后新建的数据库才生效!
之前建的数据库的还是原样!

//////////////////////// 下面的不用看,没效果,只是自己留作参考 /////////////////////////

MySQL设置的变量的也有范围
1、session范围

在数据库中查询命令中输入修改字符编码:
character_set_client=utf8
character_set_connection=utf8
set character_set_server=utf8
character_set_results=utf8
set character_set_database=utf8

属性的意思:
character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;

只要保证以上四个采用的编码方式一样,就不会出现乱码问题。
输入show variables like ‘%char%’
发现设置生效,可以看到字符集已经修改成都是utf8了。
!!!!!! 但是 !!!!!!!!这里有一个问题,当你重新打开一个命令窗口或重新打开数据库的时候,编码又会变为原来的latin1。服务器提取的时候中文还是乱码!!
【该方法不适合一劳永逸!】

2.2、global范围

mysql设置变量的范围默认是session范围。如果设置多个会话的字符集那么需要设置global范围: Set [global|session] variables …
如:
set global character_set_database=utf8
set global character_set_server=utf8
此处省略几行,参照session设置
输入:
show variables like ‘%char%’;
按理说应该变成utf8。但是没出现效果。
而且数据库重启的时候,你们发现设置global范围的值又变成latin1了。

猜你喜欢

转载自blog.csdn.net/duanbaoke/article/details/85035945
今日推荐