教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL5 数据库中文乱码问题的解决方法

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

发布时间:2023-04-29   编辑:jiaochengji.com
教程集为您提供MySQL5 数据库中文乱码问题的解决方法等资源,欢迎您收藏本站,我们将为您提供最新的MySQL5 数据库中文乱码问题的解决方法资源
中文乱码我们可以从多个方面来进行解决了,下面小编来为各位总结一下关于MySQL5 数据库中文乱码问题的解决方法,希望下文对各位有帮助.

 

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

在网上搜一下,很多帖子和方法,最后我通过如下步骤,终于纠正了多年来的乱码问题。

首先乱码是由于字符集的变化和混乱造成的。

[root@localhost plugins]# /mysql -hlocalhost -ueygle -p eygle
Enter password:
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这两个版本中有效

您可能感兴趣的文章:
mysql中utf-8编码数据库转换成GBK编码的问题
php网页标题中文乱码如何解决
php pdo编码乱码问题的解决方法
mysql5分页查询深入探讨
php与mysql遇到乱码时的一般解决思路
win2003下MySQL5安装图文教程
php的mssql扩展SQL查询中文字段名的解决方法
解决PHP提交MYSQL数据库中文内容乱码方法
php中文乱码问题总结与解决办法
php分割GBK中文乱码的解决方法

[关闭]
~ ~