我正在尝试使用encodeURIComponent
方法对 URL 进行编码。URL 中的某些参数还包含未正确编码的特殊字符(ISO-8859-1 字符集),例如é
, 。è
例如é
被编码为%C3%A9
而不是%E9
作为替代方案,我使用escape
了编码方法,它工作得非常好。
但它不编码一些字符,如+ - * / . _ @
我怀疑我是否应该使用它,大多数文章都说escape()
应该避免。谁能告诉我如何使用encodeURIComponent
或应该使用正确的编码escape
?
代码:有一个函数“get”,其中发送请求并使用encodeFormularDatas 对url 参数进行编码。HTML 页面编码为 ISO-8859-1。
this.get = function(url, answerTreatement, options) {
var request = this.newRequest();
var target = url;
if (options.parameters) {
target += "?"+this.encodeFormularDatas(options.parameters);
}
request.open("POST", target, true);
request.send(null);
}
this.encodeFormularDatas = function(values) {
var pairs = [];
var regexp = /%20/g; // encoded space
for (var name in values) {
var value = values[name];
var pair = encodeURIComponent(name).replace(regexp, "+") + '=' +
encodeURIComponent(value).replace(regexp, "+");
pairs.push(pair);
}
return pairs.join('&');
};