MySQL5 数据库中文乱码问题的修复方法
发布时间:2022-06-30 12:14:36 所属栏目:MySql教程 来源:互联网
导读:由于Mysql是从版本 4迁移到Version 5的,原来的字符集是latin1,现在是UTF8,这就遇到了经典的乱码问题,即使通过phpadmin来访问,也是一片纷乱,还好在前端的展现正常. 在网上搜一下,很多帖子和方法,最后我通过如下步骤,终于纠正了多年来的乱码问题,首先乱码是
由于Mysql是从版本 4迁移到Version 5的,原来的字符集是latin1,现在是UTF8,这就遇到了经典的乱码问题,即使通过phpadmin来访问,也是一片纷乱,还好在前端的展现正常. 在网上搜一下,很多帖子和方法,最后我通过如下步骤,终于纠正了多年来的乱码问题,首先乱码是由于字符集的变化和混乱造成的. [root@localhost plugins]# /mysql -hlocalhost -ueygle -p eygle Enter password: --phpfensi.com Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1693469 Server version: 5.0.45 Source distribution type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer. mysql> show variables like ’%char%’; +————————–+———————————-+ | Variable_name | Value | +————————–+———————————-+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /opt/mysql/share/mysql/charsets/ | +————————–+———————————-+ 8 rows in set (0.00 sec) 现在的字符集是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 这样我终于看到了久违的,正确的中文,现在的数据库字符集看起来是这个样子的: mysql> show variables like ’%char%’; +————————–+———————————-+ | Variable_name | Value | +————————–+———————————-+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /opt/mysql/share/mysql/charsets/ | +————————–+———————————-+ 8 rows in set (0.00 sec) 记录一下,供遇到此类情况的朋友参考,如果是数据库没有乱码而程序查询是乱码了,我们可以如下来解决,只好查资料,发现了一个解决方法,就是在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,连接语句用这个: mysql_query("SET NAMES 'UTF8'"); mysql_query("SET CHARACTER SET UTF8"); mysql_query("SET CHARACTER_SET_RESULTS=UTF8'"); 还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效. (编辑:昌吉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐