ガイド

URLエンコーディング:完全ガイド

URLエンコーディング(パーセントエンコーディングとも呼ばれる)は、Web開発における基本的な概念ですが、多くの開発者に誤解されています。正しく実装されていないと、セキュリティの脆弱性、壊れたリンク、データの破損につながる可能性があります。このガイドでは、URLエンコーディングとは何か、なぜ重要なのか、そしてそれを正しく使用する方法について説明します。

URLエンコーディングとは?

URLエンコーディングは、URLで安全に送信できない文字を、送信できる形式に変換するプロセスです。URLはASCII文字セットのサブセットのみを使用できます。スペース、特殊文字、非ASCII文字(アクセント記号や日本語文字など)は、エンコードする必要があります。 エンコーディングプロセスは簡単です。安全でない各文字は、パーセント記号に続いて2桁の16進数に置き換えられます。たとえば、スペースは%20になり、アンパサンド(&)は%26になり、日本語文字「あ」は%E3%81%82になります。 URLには、異なるエンコーディングルールを持つさまざまなコンポーネントがあります。スキーム(http://)、ホスト(example.com)、パス(/search)、クエリ文字列(?q=value)、フラグメント(#section)には、それぞれ安全な文字のセットが若干異なります。 予約文字には、URLで特別な意味があります。これには、? & = # / などが含まれます。クエリパラメータでこれらを文字として使用したい場合は、エンコードする必要があります。たとえば、「?q=a&b」を検索する場合、「?q=a%26b」のようにエンコードする必要があります。そうしないと、&が別のパラメータ区切り文字として解釈されます。 URLエンコーディングを理解することは、セキュリティにとって重要です。適切なエンコーディングは、URLインジェクション攻撃を防ぎ、ユーザー入力がURLとして正しく解釈されることを保証します。国際化にも不可欠です—非ASCII文字を正しくエンコードしないと、文字化けや壊れたリンクにつながります。

当社のURLエンコーダーの使用

当社の無料オンラインURLエンコーダーは、URLコンポーネントのエンコードとデコードを簡単にします。インストールやサインアップは不要で、完全にブラウザベースであるため、データはプライベートに保たれます。 テキストをエンコードするには、入力フィールドに文字列を貼り付け、「エンコード」をクリックします。ツールは、URLで安全に使用できるパーセントエンコードされた文字列を即座に生成します。URLを正しくエンコードする方法がわからない場合、このツールは正確な形式を示します。 エンコードされたURLをデコードするには、パーセントエンコードされた文字列を貼り付け、「デコード」をクリックします。ツールは元の人間が読める形式を復元します。これは、ログやURLパラメータのデバッグに便利で、実際に送信されているデータを確認できます。 このツールは、完全なURLとURLの一部の両方を処理します。クエリパラメータ、パスセグメント、または完全なURLをエンコードできます。適切なコンテキストで使用してください—完全なURLをエンコードすると、通常は望ましくありません。通常、特定のコンポーネントのみをエンコードします。 開発者向けに、このツールはJavaScriptのencodeURIComponent()の仕組みを理解するのに役立ちます。コードで同じ結果が得られるはずです。このツールを学習リソースとして、またはコードが正しくエンコードされているかどうかを確認するための迅速な検証として使用してください。 スペース、特殊文字、国際文字を含むURLを扱う場合、適切なエンコーディングが不可欠です。このツールは、エンコードされた出力がどのように見えるべきかを正確に示し、アプリケーションで正しく実装するのに役立ちます。

URLエンコーディングのベストプラクティス

常にユーザー入力をエンコードしてからURLに含めてください。ユーザーが検索クエリ、フィルター、またはURLに含まれるその他のデータを入力した場合、挿入する前にエンコードしてください。エンコードされていない入力は、壊れたURLやセキュリティの脆弱性につながる可能性があります。 適切なエンコード関数を使用してください。JavaScriptには、encodeURI()、encodeURIComponent()、およびescape()(非推奨)があります。ほとんどの場合、クエリパラメータと個々のURLコンポーネントにはencodeURIComponent()を使用します。完全なURLをエンコードする場合のみencodeURI()を使用しますが、これはまれです。escape()は決して使用しないでください—非推奨であり、国際文字を正しく処理しません。 encodeURIComponent()とencodeURI()の違いを理解してください。encodeURIComponent()は、/、?、&などのより多くの文字をエンコードします。これは、これらの文字をデータの一部として含めたいためです。encodeURI()は、完全なURLの構造を保持するためにそれらをエンコードしません。ほとんどの場合、encodeURIComponent()が必要です。 二重エンコーディングを避けてください。文字列が既にエンコードされているかどうかを確認せずに複数回エンコードすると、問題が発生します。たとえば、「hello world」は「hello%20world」にエンコードされます。再度エンコードすると、「hello%2520world」になります—%がエンコードされました。データパイプラインでエンコードが1回だけ発生することを確認してください。 フォームデータには適切な形式を使用してください。HTMLフォームは、application/x-www-form-urlencodedとして送信すると、スペースを+としてエンコードします。URLクエリ文字列では、スペースは%20としてエンコードされます。両方の形式は有効ですが、デコード時にこの違いを認識してください。 サーバー側でデコードしてください。ほとんどのWebフレームワークは、クエリパラメータを自動的にデコードします。手動でデコードする必要がある場合は、フレームワークの組み込み関数を使用してください。生のパーセントエンコードされた値を扱わないでください—デコードされた値を使用してください。 国際文字を正しくエンコードしてください。UTF-8エンコーディングを使用してください。日本語、中国語、アラビア語などの非ASCII文字は、複数のパーセントエンコードされたバイトになります。encodeURIComponent()はこれを自動的に処理しますが、サーバーはUTF-8として正しくデコードする必要があります。 URLの長さの制限に注意してください。URLエンコーディングは、非ASCII文字のURL長を大幅に増加させます。ブラウザとサーバーには長さの制限があります(通常、約2000〜8000文字)。大量のデータの場合、URLパラメータの代わりにPOSTリクエストを使用することを検討してください。 セキュリティのために検証してください。エンコーディングは検証ではありません。エンコード後もユーザー入力を検証してください。SQLインジェクションやその他の攻撃を防ぐために、サーバー側でパラメータ化されたクエリまたは準備されたステートメントを使用してください。URLエンコーディングだけでは、SQLインジェクションから保護されません。

ツールを試す

URLエンコーダー/デコーダー

URLエンコーダー/デコーダー

詳しく見る

よくある質問

URLエンコーダー/デコーダー

よくある質問