我在从数据库中获取带有特殊字符(瑞典语:“åäö”)的文本时遇到了一些问题。
如果我只是进行正常查询,
"SELECT * FROM"
和echo
结果:
while($row = mysql_fetch_assoc($result))
{
echo $row['text'];
}
......结果很好。
但是,在执行json_encode($array)
时,特殊字符已被替换:
{"id":"1","question":"fr\u00e5ga \u00e5\u00e4\u00f6"....
我不知道我尝试过多少不同的事情,包括将数据库转换为UTF-8,将字段转换为utf8_general_ci
,utf8_encode($string)
,utf8_decode($string)
,....
答案 0 :(得分:3)
你的输出是正确的;这就是你应该如何在JSON中嵌入unicode字符。
答案 1 :(得分:1)
此行为是设计使然。 这些是JSON Unicode转义。
任何兼容的JSON解析器都会正确解析它们。
答案 2 :(得分:1)
$str='{"id":"1","question":"fr\u00e5ga \u00e5\u00e4\u00f6"}';
$obj=json_decode($str);
var_dump($obj);
输出此
object(stdClass)#1 (2) {
["id"]=>
string(1) "1"
["question"]=>
string(13) "fråga åäö"
}
所以一切都很好 - 你只是看到了Unicode字符的JSON编码。
在PHP 5.4中,您可以将JSON_UNESCAPED_UNICODE传递给json_encode,然后您将获得带有UTF-8编码字符的JSON(至少我相信如此 - 尚未测试过)