これら 3 つの方法の違いについて説明した記事はたくさんありますが、そのほとんどは非常に複雑です。この記事では、これら 3 つの方法を実践的な観点から説明します。
2. Escape とそれらは同じカテゴリではありません
簡単に言うと、Escape は文字列をエンコードし (他の 2 つは URL をエンコードします)、その機能は文字列をすべてのコンピュータで読み取れるようにすることです。
エンコード後の結果は、%XX または %uXXXX の形式になります。
ASCII 文字、数字、@*/+ のうち、これらの文字は エンコードされず 、残りはエンコードされます。
最も重要なことは、URL をエンコードする必要がある場合は、このメソッドを忘れてください。このメソッドは文字列に使用され、URL には適していません。 実際、私はこの方法を実際の仕事で使用したことがないので、詳細は説明しません。
は、ASCII 文字、数字、~!@#$&*() をエンコードしません。 =:/, ;?+'encodeURIComponent メソッド
は、次の文字ASCII 文字、数字、~!*()' をエンコードしないため、encodeURIComponent のエンコード範囲は encodeURI よりも広いです。 実際の例では、encodeURIComponent は http:// を http%3A%2F%2F にエンコードしますが、encodeURI は行いません。
4. 最も重要なことは、どのような状況でどの方法を使用すべきかということです。
1. それが単なるエンコードされた文字列であり、URL とは何の関係もない場合は、エスケープを使用します。
2. URL 全体をエンコードしてこの URL を使用する必要がある場合は、encodeURI を使用します。
例えば
encodeURI("http://www.cnblogs.com/season-huang/some other thing");
はエンコード後は
"http://www.cnblogs.com/season-huang/some%20other%20thing";
"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"
3. URL 内のパラメータをエンコードする必要がある場合は、encodeURIComponent が最適な方法です。
var param = "http://www.cnblogs.com/season-huang/"; //param为参数param = encodeURIComponent(param);var url = "http://www.cnblogs.com?next=" + param; console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"
以上がエスケープ、encodeURI、encodeURIComponentの区別方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。