来自MySQL数据库的特殊字符的json_encode

时间:2011-04-26 09:05:53

标签: php mysql json utf-8

我需要将MySQL查询的结果编码为JSON格式。

我的数据库采用编码utf8_unicode_ci

特别是,我在我的数据库中存储了一些特殊的字符(例如,€),当我应用PHP函数json_encode时,它产生一个空值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

我的盲目猜测是你的MySQL数据库连接没有设置为UTF-8,即使源数据库是UTF-8,也会返回ISO-8859-1字符。

Those characters will break json_encode()因为它们在json_encode()期望的UTF-8字符集中无效。

您可能必须将连接编码设置为UTF-8。如何做到这取决于您使用的库。

mysql_*系列函数中,一种方法是

mysql_query("SET names utf8;");

或在MySQL> 5.0.7,新的

mysql_set_charset("utf8");