php – JSON输出重音问题

我一直在寻找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é”

所以我真的不知道现在该做什么,我真的很难受口音,我无法让它发挥作用.提前致谢 !

解决方法:

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

如果你使用PHP 5.4> =,你可以将JSON_UnesCAPED_UNICODE传递给json_encode:

json_encode( $data, JSON_UnesCAPED_UNICODE )

但同样,unicode也可以逃脱工作并使数据ascii安全.

编辑:

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

The datas inserted in my database are utf8_encoded

你使用的是utf8_encode吗?插入数据库时​​,无需在代码中执行任何操作.如果您使用utf8_encode在数据库中插入数据,则说明了双重编码.您只需要将数据设置为utf-8并在插入之前使用MysqL_set_charset(‘utf8’).

有趣的是,如果json包含U+2028U+2029,如果你的json有未转义的unicode,json cannot be executed as javascript,即使你添加了括号.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...