不解析jQuery.parseJSON \ u0092字符

时间:2012-06-14 10:06:36

标签: javascript jquery json

我有一个用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 daprofundirenuroitudperiralísticadelumalumnes。

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

提前致谢!

2 个答案:

答案 0 :(得分: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);
  }
})();

Live copy | source

输出:

With    (40): Els cursos tenen lobjectiu daprofundir
Without (38): Els cursos tenen lobjectiu daprofundir

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

答案 1 :(得分:0)

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

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

它只会显示,请参阅@TJCrowders的回答。