0

我正在尝试使用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('&');
};
4

0 回答 0