我有一个页面通过AJAX向php文件发出请求,并且该AJAX文件显示了一个响应的JSON,我遇到了一些问题。
结果是我的页面使用UTF-8字符集来显示一些特殊的字符等;我的AJAX文件默认使用ANSI编码但后来我决定将其更改为UTF-8以获取正确的符号,但是当我使用JSON.parse时它会抛出错误“Uncaught SyntaxError:Unexpected token”,(如果AJAX文件编码为UTF-8),然后我改为ANSI 并且效果很好,我不知道为什么JSON会有这种行为。
当我查看输出(xhr.responseText)时,ANSI和UTF-8都是相同的(我甚至不使用UTF-8中的特殊字符)。
也许JSON.parse不接受来自UTF-8文件的响应(我不相信的事情)或者我是否必须设置标题才能解决这个问题?你们怎么看待它?谢谢..
答案 0 :(得分:-1)
我遇到了同样的问题。我使用以下编码函数而不是默认编码函数。它给了我完美的结果
function json_encode_utf8($arr) {
array_walk_recursive($arr, 'encode_utf8');
return mb_decode_numericentity(json_encode($arr), array(0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
function encode_utf8(&$item, $key) {
if (is_string($item))
$item = mb_encode_numericentity($item, array(0x80, 0xffff, 0, 0xffff), 'UTF-8');
}
$group_members = array('Matthias Schöbe');
$group_members_json = json_encode_utf8($group_members);