Home >Database >Mysql Tutorial >(原创)Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文

(原创)Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文

WBOY
WBOYOriginal
2016-06-07 16:34:59923browse

PS:昨天一同事遇到mysql 5.5中文乱码问题,找我解决。解决了,有个细节问题网上没人说,我就总结一下。 一、登录MySQL查看用SHOW VARIABLES LIKE character%;下字符集,显示如下: +--------------------------+----------------------------+ | Variable_n

PS:昨天一同事遇到mysql 5.5中文乱码问题,找我解决。解决了,有个细节问题网上没人说,我就总结一下。

一、登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:
<br> +--------------------------+----------------------------+<br> | Variable_name | Value |<br> +--------------------------+----------------------------+<br> | character_set_client | utf8 |<br> | character_set_connection | utf8 |<br> | character_set_database | latin1 |<br> | character_set_filesystem | binary |<br> | character_set_results | utf8 |<br> | character_set_server | latin1 |<br> | character_set_system | utf8 |<br> | character_sets_dir | /usr/share/mysql/charsets/ |<br> +--------------------------+----------------------------+<br>
character_set_database和character_set_server的默认字符集还是latin1。

二、最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节):

1、在[client]字段里加入default-character-set=utf8,如下:
<br> [client]<br> port = 3306<br> socket = /var/lib/mysql/mysql.sock<br> default-character-set=utf8<br>
2、在[mysqld]字段里加入character-set-server=utf8,如下:
<br> [mysqld]<br> port = 3306<br> socket = /var/lib/mysql/mysql.sock<br> character-set-server=utf8<br>
3、在[mysql]字段里加入default-character-set=utf8,如下:
<br> [mysql]<br> no-auto-rehash<br> default-character-set=utf8<br>
修改完成后,service mysql restart重启mysql服务就生效。注意:[mysqld]字段与[mysql]字段是有区别的。这点在网上没人反馈过。

使用SHOW VARIABLES LIKE ‘character%’;查看,发现数据库编码全已改成utf8。
<br> +--------------------------+----------------------------+<br> | Variable_name | Value |<br> +--------------------------+----------------------------+<br> | character_set_client | utf8 |<br> | character_set_connection | utf8 |<br> | character_set_database | utf8 |<br> | character_set_filesystem | binary |<br> | character_set_results | utf8 |<br> | character_set_server | utf8 |<br> | character_set_system | utf8 |<br> | character_sets_dir | /usr/share/mysql/charsets/ |<br> +--------------------------+----------------------------+<br>

4、如果上面的都修改了还乱码,那剩下问题就一定在connection连接层上。解决方法是在发送查询前执行一下下面这句(直接写在SQL文件的最前面):
SET NAMES ‘utf8′;

它相当于下面的三句指令:
<br> SET character_set_client = utf8;<br> SET character_set_results = utf8;<br> SET character_set_connection = utf8;<br>

网上很多其他方法不能彻底解决这个问题,这个可以完美解决!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn