JavaScript将Windows-1252编码转换为UTF-8

3

如何将以下字符串转换:

var string = "Bouchard+P%E8re+et+Fils"

如何使用javascript将UTF-8编码,以便%E8变为%C3%A8?

原因是该字符似乎会干扰decodeURIComponent

您可以通过将字符串拖入http://meyerweb.com/eric/tools/dencoder/并查看控制台错误来测试,显示Uncaught URIError: URI malformed

我特别寻找能够将整个html文档解码的工具,它被声明为windows-1252编码,这就是我认为这个%E8字符来自的地方,转换成UTF-8。

谢谢!

1个回答

1
首先创建一个Windows-1252的映射表。您可以使用您选择的搜索引擎查找有关编码的参考资料。
为了本例子,我将在您的样本数据中包含一个字符。
然后找到所有百分号后面跟着两个十六进制字符的内容,将它们转换成数字,并使用该映射表进行转换(以获取原始数据),然后再次使用encodeURIComponent进行转换(以获取编码数据)。

var string = "Bouchard+P%E8re+et+Fils"

var w2512chars = [];
w2512chars[232] = "è"

var percent_encoded = /(%[a-fA-F0-9]{2})/g;

function filter(match, group) {
  var number = parseInt(group.substr(1), 16);
  var character = w2512chars[number];
  return encodeURIComponent(character);
}

string = string.replace(percent_encoded, filter);
alert(string);


那个有效。另外我学到了E8只是写232的另一种方式。非常感谢。 - dot-punto-dot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接