通过AJAX / innerHTML显示部分Unicode编码数据

时间:2009-06-19 03:47:59

标签: ajax unicode innerhtml

我试图通过AJAX调用从服务器获取一些数据,然后使用responseDiv.innerHTML显示结果。来自服务器的数据部分使用Unicode元素编码,例如:za \ u010Dat test。通过设置响应div的innerHTML,这只是按原样显示。也就是说,Unicode不会转换为浏览器中的实际表示。

包含页面的字符集设置为UTF-8。我已经尝试了大多数其他的东西,比如将unicode表示转换为HTML实体,但这似乎也不起作用。

我还应该提到来自服务器的文本也混合了HTML标签。 HTML标记应该得到尊重。例如,如果服务器中的文本为<b>Bold this!</b>,则文本以粗体显示。

任何帮助表示感谢。

维克拉姆

2 个答案:

答案 0 :(得分:0)

你可以用'&amp;#x010D;'替换'\ u010D'吗?

如果您正在设置innerHTML,那么来自服务器的HTML标记应该有效。

这对我有用:

document.getElementById('info').innerHTML = "&#x010D; <b>Bold this</b>";
BTW - 你可以使用像Fiddler或Firebug这样的东西来确保你得到你对服务器的期望。

更新:使用正则表达式查找和替换HTML实体的unicode字符:

$.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;
});

答案 1 :(得分:0)

只需将unicode文字直接转换为字符:

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