0

encodeURIComponentメソッドを使用して URL をエンコードしようとしています。URL の一部のパラメータには、正しくエンコードされていない ,éなどの (ISO-8859-1 文字セットの) 特殊文字も含まれています。è

たとえば、代わりににéエンコードされます%C3%A9%E9

別の方法として、エンコードにメソッドを使用escapeしましたが、まったく問題なく動作しています。

ただし、次のような一部の文字はエンコードされません+ - * / . _ @

私はそれを使用すべきかどうか疑問に思っており、ほとんどの記事はそれescape()を避けるべきだと言っています. を使用して正しいエンコーディングを取得するにはどうすればよいですか、または使用する必要があるか教えてくださいencodeURIComponentescape

コード:リクエストが送信される関数「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