piapia123
ja

URL エンコードとデコード

エンコード・暗号

処理はすべてブラウザ内で完結します。データは送信されません

入力
出力

テキストを percent-encoding で %XX の形にエスケープし、%XX からテキストへ戻します。2つの方式の結果は 11 文字だけ違います:encodeURIComponent は & を %26 に変え、encodeURI はそのまま残します。前者はパラメータ値の符号化に使い(値の中の & や = をエスケープしないと、サーバーがパラメータの区切りとみなし、黙って余分なパラメータを切り出します)、後者はURL 全体の符号化に使います(:// ? & = # は URL の構造であり、エスケープできません)。選び間違えてもエラーにはならず、相手の環境でリンクが開かなくなるだけなので、ここでは選択を表に出しています。デコードに失敗したときは原因も区別します:エスケープが途中で切れているのか、元のバイト列が UTF-8 でないのか。

機能

  • 双方向変換:テキスト ⇄ percent-encoding(%XX)
  • 2つの方式を選択可能:encodeURIComponent(パラメータ値)と encodeURI(URL 全体)
  • 日本語・中国語・空白・emoji はすべて UTF-8 で符号化し、ブラウザのアドレスバーでの書き方と一致します
  • デコードに失敗したときは原因を明示:エスケープが途中で切れている(% の後ろが2桁の16進数でない)か、元が UTF-8 でない(GBK など)か
  • + を空白として扱わないことを明示 —— それはフォーム符号化の規則で、percent-encoding ではありません
  • 入力するとすぐ結果が出ます。ボタンを押す必要はありません

使い方

  1. 方向を選びます:エンコードかデコード
  2. 符号化の方式を選びます:パラメータ値か URL 全体か
  3. 内容を入力欄に貼り付けると、結果がリアルタイムで表示されます
  4. 「コピー」で結果を取り出せます

よくある質問

encodeURIComponent と encodeURI はどちらを使えばよいですか?
規則は1つで足ります:URL 全体には encodeURI、個々のパラメータ値には encodeURIComponent。両者が分かれるのは ; , / ? : @ & = + $ # の 11 文字だけで、encodeURI はこれらを残し(URL の構造がこれらに依存しています)、encodeURIComponent はこれらもエスケープします。URL 全体を encodeURIComponent に通すと https:// の :// までエスケープされ、得られたアドレスはそのままでは開けません。
デコード後も %3F や %2F が残るのはなぜですか?
符号化の方式が encodeURI になっているからです。対応する decodeURI も予約文字を復元しません —— %3F は「データの中の文字としての ? であり、クエリ文字列の先頭ではない」という意味で、? に戻すと URL の意味が変わってしまいます。すべて復元したいときは encodeURIComponent のほうに切り替えてください。
空白が + ではなく %20 になるのはなぜですか?
percent-encoding では空白のエスケープは %20 です。+ で空白を表すのはフォーム送信(application/x-www-form-urlencoded)の別の規則で、両者は混ぜられません。本ツールは前者に従い、+ を空白として解釈することもありません。
「元のバイト列が UTF-8 でない可能性があります」とはどういう意味ですか?
エスケープシーケンス自体は完全ですが、解いたバイト列が有効な UTF-8 ではない、という意味です —— GBK で符号化された古いシステムからコピーしたリンクによく見られます。GBK の「你」は %C4%E3 ですが、UTF-8 では %E4%BD%A0 です。この場合、本ツールでは符号化方式を推測できません。符号化を指定できる別のツールをお使いください。

関連ツール

URL 解析

ネット・Web

URL を解析し、スキーム・ホスト・ポート・パス・クエリパラメータ・アンカーに分解します。パラメータは元の値とデコード値を並記。すべてブラウザ内で処理します。

Base64 変換

エンコード・暗号

テキストを Base64 に変換し、Base64 からテキストへ戻します。日本語や中国語、emoji も UTF-8 として正しく処理。すべてブラウザ内で完結し、内容は送信しません。

HTML 実体参照

エンコード・暗号

< > & と引用符を HTML 実体参照に変換し、文字へ戻します。デコードは1回だけで、&amp;lt; は山括弧ではなく &lt; になります。すべてブラウザ内で処理します。

JWT デコード

エンコード・暗号

JWT を header・payload・signature に分け、iat や exp を読める日時に変換します。署名は検証せず、その旨を出力に明記します。すべてブラウザ内で処理します。

Unicode エスケープ

エンコード・暗号

日本語や中国語、emoji などの非 ASCII 文字を \uXXXX・\xXX・&#xXXXX; のエスケープ表記に変換し、復元もできます。すべてブラウザ内で処理し、送信しません。

ハッシュ計算

エンコード・暗号

MD5・SHA-1・SHA-256・SHA-512 のダイジェストを計算します。日本語や中国語も UTF-8 バイトで計算し openssl や sha256sum と一致。ブラウザ内で処理します。