简短版本:
例如
ń
变为%C5%84
ń
变为%F1
背景:
我有一个客户端javascript库,用于通过AJAX发送用户输入的数据。
它是作为ascii blob的一部分发送的,在unblobbing(通过代理)之后,数据应该与通过正常提交表单发送的数据完全匹配(这样站点的服务器端逻辑不会需要改变)
当然,特殊字符在浏览器发送时会被转义。为了匹配这一点,我在对数据进行进一步处理之前一直使用encodeURIComponent()
。但是现在这个库正在其他字符集的网站上使用,例如 ISO-8859-2。
现在,我正在使用它:
function escapeByCharset(str) {
if (document.charset === "ISO-8859-2") {
return escape(str);
} else {
return encodeURIComponent(str);
}
}
但理想情况下,我正在寻找所有字符集的通用解决方案。
答案 0 :(得分:0)
您可以使用此功能让浏览器为您编码:
function encodeWithPageEncoding(str) {
var pathString = "http://a.b?";
var el = document.createElement('a');
el.href = pathString + str;
return el.href.slice(pathString.length +1);
}