> 数据库 > MySQL >

PHPmyadmin 数据库乱码问题

首先,如果你出现乱码,你一定baidu了文章,对于各种答案,肯定是头都大了,说的都差不多,却都不一样烦啊。

问题叙述:

1,从网页提交数据库数据,在phpmyadmin上显示乱码,在网页输出是好的

2,直接从数据库插入数据,但是输出到网页后是乱码

3,从网页提交数据库数据,在phpmyadmin上显示正确,但是网页输出是乱码。

对于乱码问题就这三种了吧!!

 

今天我亲自试验了一下,下面公布我的结果(我用的是UTF-8,其他同理,UTF-8特别注意)

 

总述,乱码,原因,编码不一致,为什么?答曰:提交数据库的数据需要编码,数据库存储需要编码,从数据库提取的数据还需要编码。这三种编码需要一致!

首先,你要保证所有输出输入网页都有编码声明

 
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

或者

 
  1. header("Content-Type: text/html; charset=utf-8");  

注意!!这里是utf-8,不是utf8

 

其次,相应数据的编码整理应该为utf8_general_ci。

 

1、从网页提交数据库数据,在phpmyadmin上显示乱码,在网页输出是好的,说明提交的数据和数据库的编码不一样,提取数据的编码和提交数据的编码一样 A->B->A型

这你就懂了吧,A是提交和提取数据的编码,B是数据库存储用的编码。

修改方法: 如果你不是新手的话,数据库连接文件应该是单独的吧比如execut_dql()(供查询用)或者execut_dml()(供修改用),所有的语句应该都是通过这两个函数进行的所以在这两个函数里的第一行,先写上mysql_query("SET NAMES 'utf8'"); 注意!!是utf8,不是utf-8

例如下面的(在mysql_query()你的SQL语句之前,全部 SET NAME 'utf8'一下)

 
  1. mysql_query("SET NAMES 'utf8'");  
  2. $res=mysql_query($sql,$this->conn) or die(mysql_error());  


其实,你把所以关于数据库查询、插入的语句前全部mysql_query("SET NAMES 'utf8'");后,乱码问题就已经解决了,不过你以前插入的数据要重新插入了。

 

2、直接从数据库插入数据,但是输出到网页后是乱码。B->A型

这个不用再说了吧,你把查询语句前先

 
  1. mysql_query("SET NAMES 'utf8'");  
 
  1. //你的查询  

之后刷新下就不是乱码了。

 

3、从网页提交数据库数据,在phpmyadmin上显示正确,但是网页输出是乱码。A->A->B型

 

同上,你把查询语句前先


 
  1. mysql_query("SET NAMES 'utf8'");  

 
  1. //你的查询  

之后刷新下就不是乱码了。

 

所以总结出,只要保证操作过程中,输入,存储,输出的字符编码一致,你想让他乱码都难

 

以上新手见解,请高手指点一二

(责任编辑:IT)