URL をエンコードおよびデコードする方法: 完全ガイド
簡単な回答
URL エンコードは、安全でない文字を %XX シーケンスに変換します。ここで、XX はバイトの 16 進値です。スペースは %20 (フォーム データでは +) になり、漢字はマルチバイトの %XX シーケンスになります。無料の URL エンコーダーと URL デコーダーを使用してください。すべての処理はブラウザー内でローカルに行われます。
導入
URL エンコード (パーセント エンコードとも呼ばれる) は、URL 内の予約文字と安全でない文字をエンコードして、URL をインターネット上で安全に送信できるようにするメカニズムです。 URLs には、限られた ASCII 文字セットのみを含めることができます。その他の文字 (スペース、非 ASCII 文字、記号) は、% で始まり、その後にバイト値を表す 2 つの 16 進数が続くシーケンスとしてパーセント エンコードする必要があります。
ステップバイステップ
-
エンコードが必要なものを特定する
予約されていないセットにない文字 (A ~ Z、a ~ z、0 ~ 9、-、.、_、~) はパーセント エンコードする必要があります。これには、スペース、= や & などのクエリ区切り文字、スラッシュ、中国語、アラビア語、絵文字などのすべての非 ASCII 文字が含まれます。
-
URL またはクエリ文字列をエンコードします
テキストを URL エンコーダー ツールに貼り付けます。 encodeURIComponent() を使用して、すべての予約文字をエンコードします。結果は出力フィールドに即座に表示されます。
-
エンコード結果をコピーする
「コピー」ボタンをクリックして、パーセントエンコードされた文字列をコピーします。これを URL クエリ パラメーター、API リクエスト、またはフォーム送信に安全に埋め込むことができるようになりました。
-
エンコードされた URL をデコードする
エンコードされた URL またはクエリ文字列を URL デコーダー ツールに貼り付けます。 decodeURIComponent() を使用して元の文字を復元します。デコードされた出力が期待どおりであることを確認します。
-
エッジケースを検証する
スペースが正しくデコードされていること (%20 と +)、マルチバイト UTF-8 シーケンスが正しい文字にデコードされていること、およびすでにエンコードされた文字列が二重エンコードされていないことを確認してください。
例
テキストをスペースでエンコードする
入力: Hello World
出力: Hello%20World
パス区切り文字をエンコードする
入力: a/b
出力: a%2Fb
漢字のエンコード(UTF-8)
入力: 你好
出力: %E4%BD%A0%E5%A5%BD
エンコードされたクエリパラメータをデコードする
入力: key%3Dvalue%26foo%3Dbar
出力: key=value&foo=bar
よくある問題
- 二重エンコーディング: すでにエンコードされた文字列をエンコードすると、%20 が %2520 に変わります。再エンコードする前に、入力がすでにエンコードされているかどうかを必ず確認してください。
- encodeURI と encodeURIComponent の混同: encodeURI は、完全な URLs に対して /、?、& などの予約文字をそのまま保持しますが、encodeURIComponent はクエリ パラメーター値のすべてをエンコードします。
- スペースの処理: %20 はパーセントでエンコードされた形式です。 + は application/x-www-form-urlencoded 本文データでのみ有効であり、RFC 3986 に基づく URL パスやクエリ文字列では有効ではありません。
- 非 UTF-8 レガシー エンコーディング: 最新のブラウザは UTF-8 としてエンコードしますが、レガシー システムは GBK または Latin-1 を使用する可能性があり、反対側でデコードすると文字化けが発生します。
ヒント
- 個々のクエリ パラメーター値には encodeURIComponent() を使用し、すでに整形式になっている URLs 全体には encodeURI() を使用します。
- クエリ文字列を作成するときは、値をエンコードしますが、= または & 区切り文字はエンコードしません。各値を個別にエンコードしてから、& で結合します。
- URL エンコーダ ツールとデコーダ ツールを使用して、不正な形式のクエリ文字列が原因で 400 エラーを返す API 呼び出しをデバッグします。
- 文字化けを避けるために、サーバー側では常に同じ文字エンコーディング (UTF-8) を使用してデコードしてください。