2012-06-14 2 views
3

У меня есть текст, закодированный из PHP с AJAX функции с де PHP utf8_encode.If я распечатать его в консоли непосредственно текст отображается следующим образом:jQuery.parseJSON u0092 характер не разобраны

"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.

Все остальные символы в Юникоде хорошо разбираются, но почему \ u0092 не анализируется? Что я делаю неправильно?

Заранее благодарен!

+0

Какая у вас оригинальная строка? Попробовал удалить utf8_encode? – OptimusCrime

+0

Просто замечание: FF14 'JSON.parse' корректно анализирует вашу строку, включая' \ u0092'. – Sirko

+1

Если я ромб uf8_encode возвращает null с помощью json_encode –

ответ

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

Как вы можете видеть, что они выглядят так же, с и без символа управления, но мы можем видеть из длины, что управляющий символ в включен в строке.

+0

Спасибо за ответ и что я могу сделать, чтобы отобразить его? Я бы хотел: Els cursos tenen l'objectiu d'aprofundir –

+1

@ SergiMínguez: 'str = str.replace (/ \ u0092/g," '")' должен сделать это: [Живой пример] (http: /jsbin.com/igocof/2) | [источник] (http://jsbin.com/igocof/2/edit) –

+0

это очевидно! Спасибо всем! –

0

Он разбирается jQuery. Простой тест может показать вам:

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

Это не будет отображаться только в разделе @TJCrowders ответить на это.