0

我有一个通过 AJAX 向 php 文件发出请求的页面,该 AJAX 文件显示一个 JSON 作为响应,我遇到了一些问题。

结果是我的页面使用 UTF-8 字符集来显示一些特殊字符等;我的 AJAX 文件默认使用 ANSI 编码,但后来我决定将其更改为 UTF-8 以获取正确的符号,但是当我使用 JSON.parse 时,它​​会抛出错误“Uncaught SyntaxError: Unexpected token”,(如果AJAX 文件被编码为 UTF-8),然后我更改为 ANSI,它工作得很好,我不知道为什么 JSON 有这种行为。

当我查看来自 ANSI 和 UTF-8 的输出 (xhr.responseText) 时,它们是相同的(我什至没有在 UTF-8 中使用特殊字符)。

也许 JSON.parse 不接受来自 UTF-8 文件的响应(我不相信),还是我必须设置一个标题才能解决这个问题?你们怎么看?谢谢..

4

1 回答 1

-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);
于 2013-10-14T06:47:08.053 回答