3

我有一个从 php 编码的文本,带有一个带有 de php utf8_encode 的 ajax 函数。如果我直接在控制台中打印它,则文本显示如下:

"projects":[
    {
        "id": "1",
        "title": "CURSOS DE PERIODISME",
        "description": "Els cursos tenen l\u0092objectiu d\u0092aprofundir en l\u0092actitud period\u00edstica dels alumnes."
    }
]

当我使用 jquery.parseJSON 并将文本再次打印到描述中时,文本被解析如下:

Els cursos tenen lobjectiu daprofundir en lactitud periodística dels alumnes。

所有其他 unicode 字符都被很好地解析了,但是为什么 \u0092 没有被解析呢?我做错了什么?

提前致谢!

4

2 回答 2

2

U+0092是一个控制字符,也许它正在被解析,但由于您使用字符串的方式,您没有看到它。

例如,这段代码根本不进行 JSON 解析:

(function() {

  var strWith = "Els cursos tenen l\u0092objectiu d\u0092aprofundir";
  var strWithout = "Els cursos tenen lobjectiu daprofundir";

  display("With    (" + strWith.length + "): " + strWith);
  display("Without (" + strWithout.length + "): " + strWithout);

  function display(msg) {
    var p = document.createElement('pre');
    p.innerHTML = String(msg);
    document.body.appendChild(p);
  }
})();

现场复制| 来源

输出:

与 (40): Els cursos tenen lobjectiu daprofundir
没有 (38): Els cursos tenen lobjectiu daprofundir

如您所见,无论有无控制字符,它们看起来都一样,但我们可以从字符串包含控制字符的长度看出。

于 2012-06-14T10:18:09.673 回答
0

它由 jQuery 解析。一个简单的测试可以告诉你:

> $.parseJSON('"\\u0092"').length 
1
> $.parseJSON('"\\u0092"').charCodeAt(0)
146
> $.parseJSON('"\\u0092"').charCodeAt(0).toString(16)
"92"

它只是不会显示,请参阅@TJCrowders 的答案。

于 2012-06-14T11:06:35.980 回答