Отображение частично кодированных данных Unicode через AJAX / innerHTML - PullRequest
1 голос
/ 19 июня 2009

Я пытаюсь получить некоторые данные с сервера через вызов AJAX, а затем отображать результат с помощью responseDiv.innerHTML. Данные с сервера частично кодируются элементами Unicode, такими как: тест za \ u010Dat. Установив innerHTML ответа div, он просто отображается как есть. То есть Unicode не преобразуется в фактическое представление в браузере.

Кодировка содержащей страницы установлена ​​в UTF-8. Я пробовал большинство других вещей, таких как преобразование юникодного представления в HTML-сущности, но это тоже не работает.

Я должен также упомянуть, что текст, поступающий с сервера, также содержит HTML-теги. Теги HTML соблюдаются, как и должно быть. Например, если текст с сервера имеет вид <b>Bold this!</b>, текст выделен жирным шрифтом.

Любая помощь приветствуется.

Викрам

Ответы [ 2 ]

0 голосов
/ 24 сентября 2009

Просто конвертируйте литералы Юникода в символы напрямую:

'H\u0065\u006Clo, world!'.replace(/\u([0-9a-fA-F]{4})/, function() {
return String.fromCharCode(parseInt(arguments[1],16));
});

0 голосов
/ 19 июня 2009

Можете ли вы заменить '\ u010D' на '& # x010D;'?

AFAIK HTML-теги, поступающие с сервера, должны работать, если вы устанавливаете innerHTML.

Это работает для меня:

document.getElementById('info').innerHTML = "&#x010D; <b>Bold this</b>";

Кстати - вы можете использовать что-то вроде Fiddler или Firebug, чтобы получить то, что вы ожидаете от сервера.

Обновление: используйте регулярные выражения для поиска и замены символов Юникода HTML-сущностями:

$.get('data.txt', function(data) {
    data = data.replace(/\\u([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])/g, '&#x$1$2$3$4;');
    document.getElementById('info').innerHTML = data;
});
...