今天用PHP读取的MySQL中的中文内容字段,结果读取出来的居然乱码。

使用下面的语句设置连接编码,结果还是照旧。

$charset = $params['charset'];  
mysql_query('SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary', $db);

 

我确定数据库建立的时候用的是utf8,页面输出编码是utf-8,这些都没有问题。那问题出在哪里呢?调试PHP发现,从数据库读出来的结果就是乱码的,难道是连接有问题?

在网上搜索了一番后,将上面的语句修改:

mysql_query('SET NAMES UTF8', $db);

再次执行,结果居然OK。难道只能用SET NAMES才行吗?

突然间,恍然大悟,原来是执行mysql_query()时使用了单引号,没有解析$charset的缘故。