如何转换以下字符串:
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>
谢谢!
答案 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);