gpt4 book ai didi

javascript - 使用innerHTML读取UTF8字符对所有字符返回0xfffd

转载 作者:行者123 更新时间:2023-12-02 20:47:24 27 4
gpt4 key购买 nike

我正在阅读包含 UTF-8 字符的 HTML 文档,但是当我访问该文档的 innerHTML 时,所有“坏”字符都显示为 0xfffd。我已经在所有主要浏览器中尝试过,它的行为方式都是相同的。当我 alert() innerHTML 时,它会将这些字符显示为“带有 ? 标记的菱形”。

令人惊讶的是,以下代码运行完美,在警报框中正确显示了 UTF-8 字符,因此它不是 alert() 出现故障。

alert("Doppelg\u00e4nger!");

为什么我无法使用 innerHTML 访问 UTF-8 字符?或者有其他方法可以在 JavaScript 中访问它们。

最佳答案

首先检查文档头是否包含。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

您还可以使用 javascript 读出元标记:

var metaTags = document.getElementsByTagName("META");

如果是,这就是该行为的解释。您可以尝试将 utf-8 更改为 ISO-8859-1:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

更好的方法是对 HTML 中的所有扩展字符进行 htmlEncode。像这样:

function encodeHTML(str){
var aStr = str.split(''),
i = aStr.length,
aRet = [];

while (--i) {
var iC = aStr[i].charCodeAt();
if (iC < 65 || iC > 127 || (iC>90 && iC<97)) {
aRet.push('&#'+iC+';');
} else {
aRet.push(aStr[i]);
}
}
return aRet.reverse().join('');
}

请注意,此函数将对除 [a-zA-Z] 之外的所有内容进行编码。例如,此函数会将 Doppelgänger 编码为 Doppelgänger。

关于javascript - 使用innerHTML读取UTF8字符对所有字符返回0xfffd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com