JSON输出重音问题

我一直在寻找3小时左右,我知道有很多这样的问题已经被问到,但我还没有find任何解决scheme,我的问题,当我试图输出重音字符在我的数据库上的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 interclassement
  • 我的数据库中插入的数据是utf8_encoded
  • 我的PHP脚本是在Unicode(UTF-8)
  • 我做了“mysql_set_charset('utf8');”在我的数据库上的SELECT之前
  • 如果这可以帮助某人:在y数据库中,“été”这个词是:“été”

所以我现在真的不知道该怎么做,我真的被这个口音卡住了,我无法工作。 提前致谢 !

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

如果您使用php 5.4> =,则可以将JSON_UNESCAPED_UNICODE传递给json_encode

 json_encode( $data, JSON_UNESCAPED_UNICODE ) 

但是,Unicode再一次逃脱工作,并使数据安全。

编辑:

它看起来像你的数据已经拧,甚至json_encode之前。 你已经“双编码”它看起来像utf-8。

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

你使用的东西像utf8_encode ? 插入到数据库中时,不需要在代码中执行任何操作。 如果使用utf8_encode将数据插入到数据库中,那么解释双重编码。 所有你需要的是数据是utf-8并且在插入之前有mysql_set_charset( 'utf8' )


有趣的是知道,如果你的json有非转义的unicode,即使你添加括号,如果json包含U+2028U+2029 ,json 也不能作为javascript执行 。