2

如何转换以下字符串:

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编码为 UTF-8,这是我假设这个%E8字符来自的地方。

谢谢!

4

1 回答 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);

于 2015-08-24T05:59:37.867 回答