何ができるか
URL エンコード(パーセントエンコーディングとも呼ばれます)は、URL で使えない文字や特別な意味を持つ文字を、% と 2 桁の 16 進数に置き換えます。スペースは %20、アンパサンドは %26 になり、中文 のような非 ASCII のテキストはまず UTF-8 のバイト列に変換され、各バイトが %XX として書き出されます。
このツールは、テキストをクエリ文字列、パスセグメント、API リクエストに安全に入れられるようエンコードし、ログやブラウザのアドレスバー、HTTP トレースからコピーしたパーセントエンコード済みの文字列を読めるテキストにデコードします。
使い方
- 入力 欄にテキストや URL を貼り付けるか、サンプル をクリックします。
- エンコード か デコード を選びます。
- エンコード時は、検索語のような 1 つの値をエンコードするなら コンポーネント を、
:、/、?、&、=をそのまま残すなら URL 全体 を選びます。 - HTML フォームデータには スペースを + に を、値のリストをまとめて処理するには 行ごとに処理 をオンにします。
- 結果をコピーまたはダウンロードします。デコードに失敗した場合は、壊れたエスケープシーケンスの位置がエラーに表示されます。
例
検索語 hello world & more をコンポーネントとしてエンコードすると、次のようになります。
hello%20world%20%26%20more
q=%E4%BD%A0%E5%A5%BD をデコードすると q=你好 になります。
使い分け
- クエリ文字列を手で組み立てる場合:各 値 をコンポーネントとしてエンコードし、
&と=でつなぎます。 - スペースや中国語の文字を含む完全なリンクを整える場合:リンクの構造が保たれるよう URL 全体 を使います。
- サーバーログを読む場合:多くのサーバーはフォームデータをその形式で記録するので、スペースを + に をオンにしてデコードします。
よくある質問
› 「コンポーネント」と「URL 全体」の違いは何ですか?
コンポーネントは / ? & = # を含むすべての予約文字をエンコードするので、結果を 1 つのクエリパラメーターやパスセグメントの中に安全に入れられます。JavaScript の encodeURIComponent と同じです。URL 全体はこれらの文字を残すので、アドレスはリンクとしてそのまま機能します。encodeURI と同じです。
› スペースは %20 と + のどちらにすべきですか?
パスやほとんどの API には %20 を使います。+ を使うのは、フォーム送信時にブラウザが送る HTML フォームデータ(application/x-www-form-urlencoded)の場合だけです。その場合は「スペースを + に」をオンにしてください。
› デコード時に「not valid UTF-8」と表示されるのはなぜですか?
%XX のバイト列が完全な UTF-8 文字になっていないからです。たいていは、マルチバイト文字の途中でテキストが切れているか、GBK や Latin-1 のような古い文字コードでエンコードされています。
› データはサーバーに送信されますか?
いいえ。エンコードもデコードも完全にブラウザ内で行われます。