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('&');
};