MySQL5 数据库中文乱码问题的解决方法

小浪SEO博客 专注SEO优化思维、SEO技术的实战分享类博客~

由于Mysql是从版本 4迁移到Version 5的,原来的字符集是latin1,现在是UTF8,这就遇到了经典的乱码问题,即使通过phpadmin来访问,也是一片纷乱,还好在前端的展现正常.

在网上搜一下,很多帖子和方法,最后我通过如下步骤,终于纠正了多年来的乱码问题,首先乱码是由于字符集的变化和混乱造成的.

  1. [root@localhostplugins]#/mysql-hlocalhost-ueygle-peygle
  2. Enterpassword:--phpfensi.com
  3. Readingtableinformationforcompletionoftableandcolumnnames
  4. Youcanturnoffthisfeaturetogetaquickerstartupwith-A
  5. WelcometotheMySQLmonitor.Commandsendwith;or\g.
  6. YourMySQLconnectionidis1693469
  7. Serverversion:5.0.45Sourcedistribution
  8. type’help;’or’\h’forhelp.Type’\c’toclearthebuffer.
  9. mysql>showvariableslike’%char%’;
  10. +————————–+———————————-+
  11. |Variable_name|Value|
  12. +————————–+———————————-+
  13. |character_set_client|latin1|
  14. |character_set_connection|latin1|
  15. |character_set_database|latin1|
  16. |character_set_filesystem|binary|
  17. |character_set_results|latin1|
  18. |character_set_server|latin1|
  19. |character_set_system|utf8|
  20. |character_sets_dir|/opt/mysql/share/mysql/charsets/|
  21. +————————–+———————————-+
  22. 8rowsinset(0.00sec)

现在的字符集是utf8,但是由于原来是latin1的字符集,我使用latin1进行导出:

mysqldump -hlocalhost -ueygle -p –default-character-set=latin1 blog >blog.sql

这样导出之后,如果打开看,正文应当都是正常显示才对,然后更改字符集,将所有表的字符集设置改为utf8,在vim中的命令是:

:%s/latin1/utf8/g

再执行导入操作:mysql -hlocalhost -ueygle -p eyglenew < blog.sql

这样我终于看到了久违的,正确的中文,现在的数据库字符集看起来是这个样子的:

  1. mysql>showvariableslike’%char%’;
  2. +————————–+———————————-+
  3. |Variable_name|Value|
  4. +————————–+———————————-+
  5. |character_set_client|latin1|
  6. |character_set_connection|latin1|
  7. |character_set_database|utf8|
  8. |character_set_filesystem|binary|
  9. |character_set_results|latin1|
  10. |character_set_server|latin1|
  11. |character_set_system|utf8|
  12. |character_sets_dir|/opt/mysql/share/mysql/charsets/|
  13. +————————–+———————————-+
  14. 8rowsinset(0.00sec)

记录一下,供遇到此类情况的朋友参考,如果是数据库没有乱码而程序查询是乱码了,我们可以如下来解决,只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);

mysql_query("SET NAMES 'GBK'");

数据库字符集为utf-8,连接语句用这个:

  1. mysql_query("SETNAMES'UTF8'");
  2. mysql_query("SETCHARACTERSETUTF8");
  3. mysql_query("SETCHARACTER_SET_RESULTS=UTF8'");

还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效.

相关广告
  • MySQL5 数据库中文乱码问题的解决方法 MySQL5 数据库中文乱码问题的解决方法 MySQL5 数据库中文乱码问题的解决方法
相关阅读

MySQL5 数据库中文乱码问题的解决方法

2019/10/10 17:32:39 | 谷歌SEO算法 | SEO优化