JSON输出重音问题

时间:2012-12-11 18:31:02

标签: php mysql ios json utf-8

我一直在寻找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"}]}
  • 我的数据库和表格有interclassement utf8_general_ci
  • 我的数据库中插入的数据是utf8_encoded
  • 我的php脚本是Unicode(UTF-8)
  • 我在我的数据库上的SELECT之前做了“mysql_set_charset('utf8');”
  • 如果这可以帮助某人:在数据库中,“été”这个词是:“été”

所以我真的不知道现在该做什么,我真的被这些口音所困,我无法让它发挥作用。提前致谢 !

1 个答案:

答案 0 :(得分:6)

这并不重要。当json被解码时,它们再次成为字符。

如果你使用php 5.4> =,你可以将JSON_UNESCAPED_UNICODE传递给json_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包含cannot be executed as javascriptU+2028,即使你的json包含U+2029或{{3}},你的json还有未转义的unicode,json {{3}}即使你添加了括号。