URLエンコード・デコード

URLエンコード(パーセントエンコーディング)とデコードを双方向に変換します。

他のツール

URLエンコードとは?

URLエンコード(パーセントエンコーディング)とは、URL内で使用できない文字を「%」と16進数の組み合わせに変換する仕組みです。例えば、日本語の「東京」は「%E6%9D%B1%E4%BA%AC」に変換されます。

URLにはASCII文字(英数字と一部の記号)しか使えないというRFC 3986の仕様があるため、日本語・スペース・特殊記号などはパーセントエンコーディングで変換する必要があります。Webブラウザのアドレスバーでは自動的に変換される場合もありますが、プログラムやAPIで扱う際には明示的にエンコード・デコードが必要になります。

JavaScriptではencodeURIComponent()encodeURI()の2つの関数が用意されており、用途に応じて使い分けます。パラメータ値のエンコードにはencodeURIComponent()が推奨されます。

使い方

  1. テキストを入力:上部の入力欄に、URLエンコードしたいテキストやURLを入力します。
  2. エンコード:「エンコード」ボタンをクリックすると、下部にパーセントエンコーディング済みの文字列が表示されます。
  3. デコード:パーセントエンコーディングされた文字列を復元したい場合は、下部の欄に入力して「デコード」ボタンをクリックします。
  4. エンコード方式の切替:「encodeURIComponent」チェックボックスで、encodeURIとencodeURIComponentを切り替えられます。
  5. コピー:結果をワンクリックでクリップボードにコピーできます。

活用シーン

URLで使える文字・使えない文字一覧

URLに使用できる文字はRFC 3986で定義されています。以下の表で、エンコードが必要な文字とそうでない文字を確認できます。

分類 文字 エンコード要否
英小文字 a-z 不要(そのまま使用可能)
英大文字 A-Z 不要(そのまま使用可能)
数字 0-9 不要(そのまま使用可能)
ハイフン・ピリオド等 - . _ ~ 不要(非予約文字)
URL構造文字 : / ? # [ ] @ ! $ & ' ( ) * + , ; = 予約文字(パラメータ値内では要エンコード)
スペース (半角スペース) 必要(%20 または +)
日本語 あ、漢、カ など 必要(UTF-8バイト列を%XXに変換)
その他の記号 " < > { } | \ ^ ` % 必要
制御文字 タブ、改行 など 必要

encodeURIとencodeURIComponentの違い

JavaScriptには2つのURL用エンコード関数があります。用途に応じた使い分けが重要です。

比較項目 encodeURI() encodeURIComponent()
用途 URL全体のエンコード パラメータ値のエンコード
エンコードしない文字 : / ? # [ ] @ ! $ & ' ( ) * + , ; = - . _ ~ - . _ ~ ! ' ( ) *
スペースの変換 %20 %20
/ の扱い エンコードしない %2F にエンコード
& の扱い エンコードしない %26 にエンコード
= の扱い エンコードしない %3D にエンコード
推奨場面 完全なURLをそのまま渡す時 クエリパラメータの値を渡す時

HTTPステータスコード一覧

URLを扱う際に知っておくと便利なHTTPステータスコードの一覧です。Web開発やAPIデバッグの際にご活用ください。

コード 名称 説明
200OKリクエスト成功
201Createdリソースの作成に成功
204No Content成功したがレスポンスボディなし
301Moved Permanently恒久的なリダイレクト
302Found一時的なリダイレクト
304Not Modifiedキャッシュが有効(変更なし)
400Bad Requestリクエストが不正(パラメータエラー等)
401Unauthorized認証が必要
403Forbiddenアクセス権限がない
404Not Foundリソースが見つからない
405Method Not Allowed許可されていないHTTPメソッド
408Request Timeoutリクエストがタイムアウト
429Too Many Requestsレート制限に到達
500Internal Server Errorサーバー内部エラー
502Bad Gatewayゲートウェイのエラー
503Service Unavailableサービス一時停止中
504Gateway Timeoutゲートウェイのタイムアウト

よくある質問

encodeURIとencodeURIComponentの違いは?

encodeURI()はURL全体をエンコードしますが、「:」「/」「?」「#」「&」「=」などURL構造に必要な文字はエンコードしません。encodeURIComponent()はこれらの文字もすべてエンコードするため、クエリパラメータの値など部分的なエンコードに適しています。

URLエンコードとBase64エンコードの違いは?

URLエンコードはURL内で使えない文字を%XX形式に変換する方式で、WebブラウザやHTTPリクエストで使用します。Base64はバイナリデータをASCII文字列(A-Z、a-z、0-9、+、/)に変換する方式で、メールやAPIでのデータ送信に使います。目的と用途が異なります。

スペースは「+」と「%20」のどちらにエンコードされる?

encodeURIComponent()ではスペースは「%20」に変換されます。HTMLフォーム送信(application/x-www-form-urlencoded)では「+」に変換されます。RFC 3986の標準では「%20」が正式な表記です。

日本語URLをエンコードする必要がある理由は?

URLの仕様(RFC 3986)ではASCII文字のみが使用可能です。日本語などのマルチバイト文字をURLに含めるには、UTF-8でバイト列に変換した上で各バイトを%XX形式にエンコードする必要があります。

入力したデータはサーバーに送信されますか?

いいえ、このツールではすべての処理がお使いのブラウザ内で完結します。入力したテキストやURLが外部のサーバーに送信されることは一切ありません。安心してご利用ください。