我试图通过AJAX调用从服务器获取一些数据,然后使用responseDiv.innerHTML显示结果。来自服务器的数据部分使用Unicode元素编码,例如:za \ u010Dat test。通过设置响应div的innerHTML,这只是按原样显示。也就是说,Unicode不会转换为浏览器中的实际表示。
包含页面的字符集设置为UTF-8。我已经尝试了大多数其他的东西,比如将unicode表示转换为HTML实体,但这似乎也不起作用。
我还应该提到来自服务器的文本也混合了HTML标签。 HTML标记应该得到尊重。例如,如果服务器中的文本为<b>Bold this!</b>
,则文本以粗体显示。
任何帮助表示感谢。
维克拉姆
答案 0 :(得分:0)
你可以用'&amp;#x010D;'替换'\ u010D'吗?
如果您正在设置innerHTML,那么来自服务器的HTML标记应该有效。
这对我有用:
document.getElementById('info').innerHTML = "č <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));
});