对MySql乱码问题的理解:
关于mySql中编码图:
在dos下进入MySql客户端输入:show variables like 'character%';命令,就可以看到上图右边关于mysql的服务器的编码方式。
其中:
character_set_client utf-8
character_set_connection utf-8
character_set_database utf-8
character_set_results utf-8
可以知道服务器端和客户端
连接的编码character_set_connection
客户端设置编码character_set_client
展示设置的编码character_set_results
数据库中存储编码:character_set_database
那我们打开dos下的mysql时是什么呢?那就是mysql客户端:
分析:客户服务器端的编码方式是character_set_client 是utf-8,但是真正的客户端的操作系统是中文的,编码格式是gbk,所以在服务器端设置的utf-8是一个虚拟编码,正真的编码是操作系统是gbk,客户端以gbk方式发送到服务端,服务端的链接编码是character_set_connection utf-8,所以产生了乱码。
那么解决的方法如下:
1)修改客户端编码 操作系统编码的修改是比较麻烦的,不可采取。
2)修改服务器端编码 修改服务器端编码可取
修改服务器端编码:可以在dos下set names gbk,实现服务器端编码的变换成gbk。但是这样的效果只是修改了当前客户端和服务器端的正常连接与显示。
最终解决方法:在my.ini配置文件中的default-character-set=utf8,将utf8设置成gbk
这样的修改的结果是:
character_set_client gbk
character_set_connection gbk
character_set_database utf-8
character_set_results gbk
我们发现一个问题:character_set_database utf-8 在服务器端存储数据的仍然是utf-8,那这样的情况下是不是仍然会乱码,其实在数据存储的时候,服务器端已经帮我们实现了编码的转换,这样其实不会存在乱码了。
关于一些MySql学习资料下载地址:http://download.csdn.net/detail/itjavawfc/8111213
包括了:MySql文档,MySql安装教程,MySql入门PPT