JS を使用してデータを送信する場合、特に中国語を使用する場合、多くの場合、送信する文字列を URL エンコードする必要があります。 JS の文字列を URL エンコードするには、encodeURI、encodeURIComponent、およびエスケープといういくつかの方法があります。私が見た多くのコードではエスケープ関数が最もよく使われていますが、この関数は推奨されません。これらの関数を個別に見てみましょう:
encodeURI: これらの URL の : # / = & キー文字を除いて、指定された文字列を URL エンコードします。
encodeURIComponent: URL の特殊文字を含む、文字列内の文字をエンコードします。
escape: これは比較的初期のバージョンの JS 関数です。この関数で Unicode 文字を処理する場合、いくつかの問題が発生します。
コードは次のとおりです:
var url = "http://www.abc.com?q=aa& amp;b=haha";
var encodedUrl = encodedURI(url); //出力: http:/ /www.abc.com ?q=aa&b=hehe
encodedUrl = encodeURIComponent(url);
alert(encodedUrl); //出力: http:/// /www.abc.com?q=aa&b= hehe
alert(escape( url)); //出力: http://www.abc.com?q=aa&b=%u5475%u5475
上に示すように、中国語を処理する場合エスケープ関数内の文字は、%uxxxx の形式に変換されます。明らかに、これは URL エンコード形式とは異なります。特別な必要がない場合、encodeURIComponent 関数のエンコードが最も一般的です。もちろん、エスケープを使用すると、それができない可能性があります。問題は何ですか? サーバー側の言語では正常に解析できるかもしれませんが、この関数は Unicode 文字を扱う場合にはあまり標準的ではないため、次のようにすることをお勧めします。 encodeURIComponent 関数と decodeURIComponent 関数を使用して、文字列を URL エンコードおよびデコードします。