日期:2014-05-16  浏览次数:20367 次

mysql数据库支持中文
   今天写程序用到了mysql数据库,需要支持中英文,好久没用过mysql数据库了,以前用的时候也就是做演示小程序用没注意过这个问题,今天试了一下发现不支持中文。于是google了不少解决的方法,感觉很杂很乱,于是自己尝试了一些,在这里做个总结,方便自己也方便别人。
   mysql不支持中文是编码的问题,我的平台用的是linux平台,如果用windows平台可能会好一些。支持中的编码一班就是gbk,gb2312,这两个都是支持中英文的,是国标,如果做国际化最好是用utf8编码格式,这个是国际规范,支持的字符类型也很广,支持汉字,朝鲜语,日本语等等。而且linux平台和java都是默认编码是utf8,所以如果支持中文推荐将字符集设置成utf8可以一劳永逸,解决一些不必要的麻烦,对未来系统升级也可能有帮助。下面对设置方法进行列举
   1.治标先治本,最好的方法就是在安装mysql的时候设置默认字符集为utf8(不过这个好像在windows下好用,linux下安装时我没发现这个选项)。---->未测试
   2.安装完后再修改编码格式。mysql默认安装的编码格式是latin1(不支持中文),所以安装完后需要修改,修改步骤如下:
        1)首先查看当前的编码格式。通过命令行输入“show variables like 'char%'”。----->测试通过
        2)如果是结果为
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
则不用修改,目前mysql可以支持中文。如果不是,则先停止mysql,修改mysql配置文件,my.conf,然后再启动mysql,linux下命令
sudo /etc/init.d/mysql stop //停止mysql
sudo gedit /etc/mysql/my.cnf  //修改配置文件
sudo /etc/init.d/mysql start  //启动mysql

然后重复第1)步看看结果是否跟第二步一样。一样则修改成功。   ---->测试成功
   3.此时mysql应该就可以支持中文了。但是我修改晚仍然不支持中文,仔细想了想,我是先创建好数据库,然后才想起来支持中文,创建的时候有个选项是选择字符集我选择的是默认的字符集,所以先前创建的数据库和表的字符集还是默认的latin1,当然就不能支持中文了,如何确认现在的表是不是支持中文的编码格式,请看第4步。  
   4.查看数据库表的字符集。
show variables like 'char%'
查看是不是支持中文的编码格式,如果不是则修改,我是通过mysql的图形界面工具guiTools修改的。  ----->测试通过
   5.修改完成后运行程序,完美支持中文。
   另外在查资料的同时还发现可以通过设置数据库链接字符串来支持中文,不过没有测试,不知到好不好用。如果发现自己按照别人设置成功的步骤设置完了,仍然不支持中文最好是查查原来创建的数据库和表是不是也修改为支持中文的编码格式。
总结下来,首先要在创建数据库和表的时候设置成支持中文的编码格式,然后再设置数据库默认编码格式,如果不设置也可以通过为数据库连接字符串添加属性,设置为支持中文的编码规范。这是我的一点点总结,不足的地方欢迎大家指正。
1 楼 Technoboy 2011-05-03  
mysql从列,表,数据库,mysqld,connection,result(query)都有字符集的支持!
2 楼 lwjlaser 2011-05-04  
Technoboy 写道
mysql从列,表,数据库,mysqld,connection,result(query)都有字符集的支持!

嗯,是的,这样配置完成后默认的就是utf8编码格式,否则的话要在键表的时候列,表,数据库都要设置编码为utf8,比较麻烦