mysql 中 字符设置

来源:互联网 发布:mac唇膏see sheer 编辑:程序博客网 时间:2024/05/20 04:49
Mysql关于字符集的变量有


SQL:  show variables like '%character%'

+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_client     | gbk                                           |
| character_set_connection | gbk                                           |
| character_set_database   | utf8                                          |
| character_set_filesystem | binary                                        |
| character_set_results    | gbk                                           |
| character_set_server     | latin1                                        |
| character_set_system     | utf8                                          |
| character_sets_dir       | D:\wamp\bin\mysql\mysql5.5.16\share\charsets\ |
+--------------------------+-----------------------------------------------+


上面就是所有关于Mysql中字符集的设置,相信弄懂的了上面的变量的含义,就再也不会有什么数据乱码的烦恼了吧

character_set_client,character_set_connection,character_set_result

这三个变量, 分别告诉MySQL 客户端的编码集, 在传输给MySQL服务器的时候的编码集, 以及期望MySQL返回的结果的编码集,

我们要想得到正确编码的数据,首它们的编码集应该一样,而设置编码上面三个变量编码集一样有一个快捷方法:

set names utf8

执行上面的那个命令,可以一次将 character_set_client,character_set_connection,character_set_result 

三个变量都设置成 UTF-8 的编码,

然后我们要得到正解编码的数据,还要知道数据库的编码方法,也就是上面设置的 character_set_database,这只是数据库的默认编码,而

我们知道存放数据的是表,所以我们要以表中的字符为基准,如果不设置表的字符集的话,会继承数据库字符集

所以如果数据库出现乱码的情况下,我们就看一下上面的四种情况下的编码是不是一样


对于Java中,执行Set names utf8 并不以解决乱码问题,而其中解决的办法是改变连接串,在连接字符串中指定字符集:

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xsgl?useUnicode=true&characterEncoding=UTF-8","root","root");


这个字符集指定的是character_set_client  ;character_set_connection 的编码是utf8,而并没有指定 character_set_results 的编码为空,

所以现在存放数据库应该没问题,但如果取出,还要将 character_set_results 的编码与应用程序的编码(控制台、Java等)相同 

http://hi.baidu.com/dburu/blog/item/67b0958bff8b5fdbfd1f108c.html

原创粉丝点击