1

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

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

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

任何帮助表示赞赏。

维克拉姆

4

2 回答 2

0

你能用'č'替换'\u010D'吗?

如果您正在设置innerHTML,来自服务器的HTML标签应该可以工作。

这对我有用:

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

顺便说一句 - 您可以使用 Fiddler 或 Firebug 之类的东西来确保您从服务器获得预期的结果。

更新:使用正则表达式查找 unicode 字符并将其替换为 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;
});
于 2009-06-19T03:55:58.270 回答
0

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

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

于 2009-09-24T01:48:19.937 回答