Ubuntu下MySQL中文乱码解决



Ubuntu下MySQL中文乱码解决

对于MySQL中文乱码问题(我的是Ubuntu Linux系统),在网上看了很多解决方案,很多说要修改MySQL的配置文件,于是我按照下面的方法修改:
方法来自:http://www.cnblogs.com/flyingcloude/archive/2012/09/09/2677569.html

 

  1. 修改/etc/mysql/my.cnf
  2. sudo gedit /etc/mysql/my.cnf
  3. 在my.cnf文件中的[client]段和 [mysqld]段加上以下两行内容:
  4. [client]
  5. default-character-set=utf8
  6. [mysqld]
  7. default-character-set=utf8
  8. 重新启动MySQL:sudo /etc/init.d/mysql restart
  9. 查看一下现在mysql的编码
  10. mysql>show variables like ’character%’;
  11. +————————–+—————————-+
  12. | Variable_name | Value |
  13. +————————–+—————————-+
  14. | character_set_client | utf8 |
  15. | character_set_connection | utf8 |
  16. | character_set_database | utf8 |
  17. | character_set_filesystem | binary |
  18. | character_set_results | utf8 |
  19. | character_set_server | utf8 |
  20. | character_set_system | utf8 |
  21. | character_sets_dir | /usr/share/mysql/charsets/ |
  22. +————————–+—————————-+

 

修改/etc/mysql/my.cnf
sudo gedit /etc/mysql/my.cnf

在my.cnf文件中的[client]段和 [mysqld]段加上以下两行内容:
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8

重新启动MySQL:sudo /etc/init.d/mysql restart

查看一下现在mysql的编码
mysql>show variables like 'character%';
+--------------------------+----------------------------+
| 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就能正常启动了!这个很奇怪,真不知道是怎么回事。我修改数据库的编码方式为utf8后,仍然不行。我查询出的的character_set_server总是latin1字符集。
最后经过N此试验发现,character_set_server=latin1没关系。备份之前的数据库,然后重建数据库,重建时,选择字符集为 utf8 – default collation ,然后导入数据,发现中文不在乱码了。见下图所示:

 

 


但是对于已经存在的数据库,通过修改数据库Alter DataBase…还是不能解决乱码问题。

 

而且对于网上说的,在mysql命令行中使用SET命令重新设置字符集,根本没用,关闭连接后,再次连接,查询发现,字符集又变成latin1了,很是郁闷。网上的设置方式如下(我没成功):

 

  1. mysql> set character_set_server=utf8;
  2. mysql> set character_set_database=utf8;

 

mysql> set character_set_server=utf8;
mysql> set character_set_database=utf8;

 

当前我只找到了这个方法——重建数据库。如果有更好的方法,多谢赐教!