この記事では、escape、encodeURI、encodeURIComponent の違いを主に紹介します。必要な方は参照してください。
1 の違いについて説明します。これら 3 つの方法 記事が多すぎますが、そのほとんどは非常に複雑です。この記事では、これら 3 つの方法を実践的な観点から説明します。
2. Escape はそれらと同じタイプではありません簡単に言えば、Escape は文字列をエンコードします (他の 2 つは URL をエンコードします)。すべてのコンピュータで読み取り可能です。
エンコード後の結果は、%XX または %uXXXX の形式になります。 このうち、ASCII 文字、数字、@*/ はエンコードされませんが、残りはエンコードされます。
最も重要なことは、URL をエンコードする必要がある場合、このメソッドは URL ではなく文字列に使用されることを忘れてください。
実際のところ、私はこの方法を実際の仕事で使用したことがないので、詳細は説明しません。
URL をエンコードするのが一般的であるため、実際にはこれら 2 つのメソッドに特別な注意を払う必要があります。
これらはすべてエンコードされた URL です。唯一の違いは、エンコードされた文字の範囲です。encodeURI メソッドは、ASCII 文字、数字、~!@#$&*()=:/,; をエンコードしません。 ? '
encodeURIComponent メソッドは、次の文字の ASCII 文字、数字、~!*()'
をエンコードしないため、encodeURIComponent のエンコード範囲は encodeURI よりも広くなります。
実際の例として、encodeURIComponent は http:// を http:// にエンコードしますが、encodeURI は行いません。
その違いについては、明確に説明します。実用的なバンドル。
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 サイトの他の関連記事を参照してください。