クエリ文字列を Web サーバーに送信するコンテキストでは、適切なエンコード方法は次によって異なります。特定のエンコード要件。
escape() 関数ECMAScript 仕様で非推奨になっているため、使用しないでください。 @、_、*、.、および - を除くすべての特殊文字をエンコードします。
機能的な URL が必要な場合は、encodeURI() を使用します。 URL 用に特別に予約されている文字を除くすべての文字をエンコードします。これらの予約文字には、/、&、?、:、および @ が含まれます。
URL パラメーターの値をエンコードする場合は、encodeURIComponent() を使用します。明示的に非予約として指定された文字を除くすべての文字をエンコードします。これらの予約されていない文字には、/、?、:、および @ が含まれます。
例:
次のクエリ文字列をエンコードするには:
http://www.example.org/a file with spaces.html
You encodeURI() を使用して、次のエンコードされたデータを取得します。 URL:
http://www.example.org/a%20file%20with%20spaces.html
ただし、クエリ文字列内のパラメータの値をエンコードしたい場合は、encodeURIComponent():
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
結果のエンコードされたパラメータ値は次のようになります。次に、ベース URL に追加して完全な URL を形成します:
var url = "http://example.net/?param1=" + p1 + "¶m2=99"
これにより、次のような完全にエンコードされた結果が得られます。 URL:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
encodeURIComponent() は ' 文字をエンコードしないことに注意することが重要です。これは、HTML 属性を構築するときに適切に処理されないと、セキュリティ上の脆弱性を引き起こす可能性があります。
以上がEscape、encodeURI、または encodeURIComponent: クエリ文字列のエンコーディングにどちらを使用する場合?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。