ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript_javascriptスキルにおける各種エンコード・デコード機能の違いと注意点

JavaScript_javascriptスキルにおける各種エンコード・デコード機能の違いと注意点

WBOY
WBOYオリジナル
2016-05-16 18:21:14865ブラウズ

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 エンコードおよびデコードします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。