【发布时间】:2015-04-11 18:53:46
【问题描述】:
我遇到了一个奇怪的问题,我查看了所有类似的问题,但仍然无法解决。我正在用 javascript 解码 MIME 电子邮件,看到 =C2=A3 这意味着两个字符 0xC2 和 0xA2 来制作 UTF-8 英镑符号。
我已经在文档中设置了 meta charset = UTF-8,但它仍然没有在呈现的 html 文档中显示为井号。 Page Info 说页面呈现为 UTF-8...如果是这种情况,为什么井号和 nbsp 不能正确显示?
我正在使用以下代码来解码字符串:
s.replace(/=[\r\n]+/g, "").replace(/=[0-9A-F]{2}/gi, function(v) {
return String.fromCharCode(parseInt(v.substr(1), 16));
})
【问题讨论】:
-
我正在使用下面的代码来解码字符串s:
s.replace(/=[\r\n]+/g, "").replace(/=[0-9A-F]{2}/gi, function(v) { return String.fromCharCode(parseInt(v.substr(1),16)); }); -
是的,这太简单了。字节
C2 A3together 构成一个以 UTF-8 编码的 Unicode 字符;String.fromCharCode期望单个 Unicode 代码点生成一个字符。连续做两个单独的字节不会这样做。在解码此文本时,您需要了解 UTF-8 编码细节,以确保将=C2=A3一起解码为一个数字,然后传递给String.fromCharCode。这可能是相当多的代码,我希望已经有库可用于此类事情。 -
感谢您的帮助 - 您刚刚解决了几天的工作!
标签: javascript encoding utf-8 mime