MySQL中文乱码的解决办法
这几天做一个项目,发现php读取Mysql数据时,会出现中文乱码的错误,全部显示为问号。即使把数据表的字符集改成utf-8,依然不能解决。后来在网上查了一下,得到问题的解决方案了。可以看下此链接,讲解的比较繁琐,我在这里归纳一下。
MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。这几个层次中前三个是继承关系的,即当把服务器设置成某种字符集而数据库和数据表都没有设置字符集时,后面的两个层次自动默认为服务器端的字符集。
在Mysql中,server端默认的字符集为latin1,这与Mysql的历史有关,如果有兴趣可以在网上查一下。所以如果当你在建表和数据库时不设置字符集,将会自动默认为latin1,当你数据表中出现中文时,显然是不支持的,就会出现乱码的问题。
我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES ‘utf8′;
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
再试试看,正常了吧?
我的解决办法
在 查询语句前加
Mysql_query(”set names utf8″);

鼓励一下,冒个泡