Javascript 将 windows-1252 编码转换为 UTF-8

Javascript convert windows-1252 encoding to UTF-8

如何转换以下字符串:

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。

谢谢!

首先创建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);