Linux下mysql中文编码问题的解决

做为一名中国的程序员最郁闷的可能就是要面对繁琐的中文编码问题了。

这个问题困扰我好几天,终于在同学的帮助下给解决了。

1.Linux下的系统编码需要设置一下,修改/etc/sysconfig/i18n的内容为:

LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:zh_CN"
SUPPORTED="zh_HK.UTF-8:zh_HK:zh:zh_CN.GB18030:zh_CN:zh:zh_TW.Big5:zh_TW:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

然后需要将语言设置写入系统环境变量中,操作如下:

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.GBK"

2.这一步是将mysql的默认字符集换成utf8,后面其实把数据库的字符集又改回latin1,所以这步可能并没有作用。

修改/etc/my.cnf,添加    default-character-set= utf8

然后重启mysql,在shell下输入     /etc/rc.d/init.d/mysql start

3.针对需要输入中文字符的数据库配置

ALTER DATABASE `ciscrawler` DEFAULT CHARACTER SET latin1;
ALTER TABLE `http_4` DEFAULT CHARACTER SET latin1;
ALTER TABLE `http_4` CHANGE `PURL_TITLE` `PURL_TITLE` VARCHAR( 50 ) CHARACTER SET latin1;

程序从数据库写入和读出时候都使用iso-8859-1编码

String title = new String(rs.getString("PURL_TITLE").getBytes("iso-8859-1"));