3

de php utf8_encodeのajax関数を使用してphpからエンコードされたテキストがあります。コンソールに直接印刷すると、テキストは次のように表示されます。

"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);
  }
})();

ライブコピー| ソース

出力:

With (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 に答える