0

我在从数据库中获取带有特殊字符(瑞典语:“åäö”)的文本时遇到了一些问题。

如果我只是做一个普通的查询,

"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), ....

4

3 回答 3

3

你的输出是正确的;这就是你应该如何在 JSON 中嵌入 unicode 字符。

于 2012-05-17T12:00:05.207 回答
1

此行为是设计使然。这些是 JSON Unicode 转义。

任何兼容的 JSON 解析器都会正确解析它们。

于 2012-05-17T12:00:02.003 回答
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(至少我相信如此 - 尚未测试过)

于 2012-05-17T12:01:56.573 回答