> Hello,欢迎来到程序员社区。 今天聊一聊 从MySQL数据库获取中文显示乱码解决方案,希望对大家有所帮助。
Java面试手册PDF下载:[点击下载最全Java面试手册](http://117.78.51.75/219-2)
显示乱码有许多原因:
我遇到的主要是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:ProgramDataMySQLMySQL 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 FilesMyJava面试手册SQLMySQL Server 5.7,所以复制一份my.ini到 安装目录下。
#拓展知识
[mysql] #客户端的工具,执行sql命令
[mysqld] #服务器端,用来启动MySQL数据库服务
重启MySQL57 服务。
再次运行命令工具:发现已经生效,真舒服!
注意点来了!
进入Navicat新建查询发现还是没变:
显示如下:
是因为上面修改成功的对以后新建的编程电子书汇总数据库才生效!
之前建的数据库的还是原样!
参考链接:https://www.cnblogs.com/jasonzeng/p/8341445.html.
参考链接:https://bbs.csdn.net/topics/390881914
下面的大家不用看,我写给自己看的,只是自己留作参考 /
MySQL设置的变量的也有范围
1、session范围
在数据库中查询命令中输入修改字符编码:
character_set_client=utf8
character_set_connection=utf8
set characterJava面试手册_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了。
> 时间不一定能证明很多东西,但是一定能看透很多东西。坚信自己的选择,不动摇,使劲跑,明天会更好。