我一直在寻找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"}]}
所以我真的不知道现在该做什么,我真的被这些口音所困,我无法让它发挥作用。提前致谢 !
答案 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 javascript或U+2028
,即使你的json包含U+2029
或{{3}},你的json还有未转义的unicode,json {{3}}即使你添加了括号。