ホームページ > ウェブフロントエンド > jsチュートリアル > エスケープ、encodeURI、encodeURIComponent の単純かつ明確な区別

エスケープ、encodeURI、encodeURIComponent の単純かつ明確な区別

青灯夜游
リリース: 2018-10-08 16:05:04
転載
1748 人が閲覧しました

この記事では、escape、encodeURI、encodeURIComponent の違いを主に紹介します。必要な方は参照してください。

1 の違いについて説明します。これら 3 つの方法 記事が多すぎますが、そのほとんどは非常に複雑です。この記事では、これら 3 つの方法を実践的な観点から説明します。

2. Escape はそれらと同じタイプではありません

簡単に言えば、Escape は文字列をエンコードします (他の 2 つは URL をエンコードします)。すべてのコンピュータで読み取り可能です。

エンコード後の結果は、%XX または %uXXXX の形式になります。

このうち、ASCII 文字、数字、@*/ はエンコードされませんが、残りはエンコードされます。
最も重要なことは、URL をエンコードする必要がある場合、このメソッドは URL ではなく文字列に使用されることを忘れてください。
実際のところ、私はこの方法を実際の仕事で使用したことがないので、詳細は説明しません。

3. 最も一般的に使用される encodeURI と encodeURIComponent

URL をエンコードするのが一般的であるため、実際にはこれら 2 つのメソッドに特別な注意を払う必要があります。

これらはすべてエンコードされた URL です。唯一の違いは、エンコードされた文字の範囲です。

encodeURI メソッドは、ASCII 文字、数字、~!@#$&*()=:/,; をエンコードしません。 ? '
encodeURIComponent メソッドは、次の文字の ASCII 文字、数字、~!*()'
をエンコードしないため、encodeURIComponent のエンコード範囲は encodeURI よりも広くなります。
実際の例として、encodeURIComponent は http:// を http:// にエンコードしますが、encodeURI は行いません。


4. 最も重要なことは、どのような状況でどのような方法を使用すべきかということです。

その違いについては、明確に説明します。実用的なバンドル。

1. それが単なるエンコードされた文字列であり、URL とは関係がない場合は、エスケープを使用します。

2. URL 全体をエンコードしてこの URL を使用する必要がある場合は、encodeURI を使用します。


例:

encodeURI("//www.php.cn/season-huang/some other thing");
ログイン後にコピー

はエンコードすると

"//www.www.php.cn/season-huang/some%20other%20thing";
ログイン後にコピー

になります。このうちスペースは にエンコードされます。しかし、encodeURIComponent を使用すると、結果は次のようになります:

"http://www.jb51.net/season-huang/some other thing"

Do you see theDifference, Even" / " はすべてエンコードされ、URL 全体が使用できなくなります。

3. URL 内のパラメータをエンコードする必要がある場合は、encodeURIComponent が最適な方法です。

var param = "//www.php.cn/season-huang/"; //param为参数
param = encodeURIComponent(param);
var url = "//www.php.cn?next=" + param;
console.log(url) ////www.php.cn?next=http%3A%2F%2Fwww.jb51.net%2Fseason-huang%2F
ログイン後にコピー

見たところ、パラメータの「/」はエンコード可能ですが、encodeURIを使用すると、次の/をエンコードする必要があるため、間違いなく問題が発生します。

上記はこの章の全内容です。その他の関連チュートリアルについては、

JavaScript ビデオ チュートリアル

をご覧ください。

以上がエスケープ、encodeURI、encodeURIComponent の単純かつ明確な区別の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート