5

我已经搜索了大约 3 个小时,我知道有很多类似这样的问题已经被问过,但是当我尝试输出重音字符时,我没有找到任何适合我的问题的解决方案通过对我的数据库进行 SELECT 查询的结果。

 $itemsList = array();
 while($row = mysql_fetch_assoc($res)){
    $itemsList[Items][] = ($row);
 }
 echo json_encode($itemsList);

这将输出:

{"Items":  [

{"user_name":"misterP", 

"comment":"\u00c3\u00a9t\u00c3\u00a9",

"image_name":"403885300736874.jpg"}]}

但我需要输出口音,如下所示:

{"Items":  [

{"user_name":"misterP", 

"comment":"été",

"image_name":"403885300736874.jpg"}]}
  • 我的数据库和表有类间 utf8_general_ci
  • 我的数据库中插入的数据是 utf8_encoded
  • 我的 php 脚本是 Unicode (UTF-8)
  • 我在数据库上的 SELECT 之前做了“mysql_set_charset('utf8');”
  • 如果这可以帮助某人:在y数据库中,“été”一词是:“été”

所以我现在真的不知道该怎么办,我真的被口音困住了,我无法让它发挥作用。提前致谢 !

4

1 回答 1

7

这并不重要。当 json 被解码后,它们又变成了字符。

如果你使用 php 5.4 >=,你可以传递JSON_UNESCAPED_UNICODEjson_encode

json_encode( $data, JSON_UNESCAPED_UNICODE )

但同样,unicode 转义也同样有效,并使数据 ascii 安全。

编辑:

看起来你的数据已经被搞砸了,甚至在之前json_encode。您似乎已将其“双重编码”为 utf-8。

我的数据库中插入的数据是 utf8_encoded

你在使用类似的东西utf8_encode吗?当您插入数据库时​​,您不需要在代码中做任何事情。如果您使用 将数据插入数据库utf8_encode,那么这就解释了双重编码。您所需要的只是数据是 utf-8 并且mysql_set_charset( 'utf8' )在插入之前具有。


有趣的是,如果您的 json 具有未转义的 unicode,则即使您在 json 包含or时添加括号,该 json也无法作为 javascript 执行U+2028U+2029

于 2012-12-11T18:34:03.110 回答