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

时间:2015-08-24 05:43:53

标签: javascript encoding utf-8 windows-1252

如何转换以下字符串:

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。< / p>

谢谢!

1 个答案:

答案 0 :(得分: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);