解决Mysql中文乱码:

以基于Servlet+Mysql构建网站为例,网页/数据库出现中文乱码的原因:数据在流动的任意节点处,编码不一致,出现乱码。

数据流动的任意节点,分为两块,分别是Web和数据库:

  • Web:网页、Jsp页面、Java代码文件、Tomcat读取的web.xml
  • 数据库:Mysql的client/server/connection以及数据库/表/字段

要使乱码不出现,须使任意的数据节点编码一致,在此之前先了解以下知识:

  • 字符集:Laruence写的深入Mysql字符集设置,以及Mysql字符集设置详解。
  • 编码:GBK和UTF-8有什么区别?,以及前端工程师与字符编码及更多。

在学习上面关于字符集以及编码的知识后,下面我们就谈谈如何解决Mysql中文乱码(Web方面的可以自行Google,大同小异)。

1.将mysql-version/support-files/my-default.cnf 复制一份到 /etc 下面,并改名为my.cnf (Window下叫my.ini)

2.「Mysql的client/server/connection以及数据库/表/字段」编码设置为utf8,添加以下内容至my.cnf中

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci  
init-connect='SET NAMES utf8'  
character-set-server = utf8  

4.重启Mysql,进入Mysql,输入show variables like 'char%’;

5.在保证所输入数据库的内容格式为utf8的情况下,一般可以解决Mysql中文乱码。

更多关于Mysql设置utf8,以及修改my.cnf的内容参见Stack Overflow上的讨论。

你可能感兴趣的:(解决Mysql中文乱码:)