URL Encoding エンコード & デコード

無料オンライン URL Encoding エンコード & デコード ツール。100% ローカル処理 — データは端末の外に出ません。

出力

結果がここに表示されます...

入力 エンコード

Usage Guide

URLエンコードについて

URLエンコード( パーセントエンコーディングとも呼ばれ、 RFC 3986で定義)は、URL内の特殊文字を安全な文字に変換するエンコード方式です。URLはASCII文字のサブセット(英字、数字、一部の特殊文字)のみを許可しており、その他の文字(スペース、日本語、特殊記号など)はURLで使用する前にエンコードする必要があります。URLエンコードは各バイトを%XX形式に変換します。XXはそのバイトの 16進数 表現です。URLエンコードはWeb開発の基礎であり、URLパラメータ、フォーム送信、HTTPリクエストなど様々な場面で広く利用されています。

Web開発の必須知識:URLエンコードはWeb開発で最もよく使われるエンコード方式の一つで、URLでのパラメータ受け渡し、フォーム送信の処理、HTTPリクエストの構築などに使用されます。特殊文字(スペース、&、= など)をURLで安全に送信できるようにします。URLパラメータ処理の第一選択として推奨

使い方

URLエンコード・デコードは非常に簡単です:

1. エンコード特殊文字を含むテキストを入力し、「エンコード」ボタンをクリックするとURL安全なエンコード文字列が得られます
2. デコードURLエンコードされた文字列を入力し、「デコード」ボタンをクリックすると元のテキストが復元されます
3. 結果をコピー「コピー」ボタンをクリックしてエンコード・デコード結果を取得します
プライバシー保護:すべての計算はブラウザ内でローカルに行われ、データがサーバーにアップロードされることはありません。完全にオフラインで処理されます。

エンコードルール

URLエンコードは以下のルールに従います:

予約文字英字(A-Z、a-z)、数字(0-9)、ハイフン(-)、アンダースコア(_)、ピリオド(.)、チルダ(~)はエンコードされません
スペーススペースは%20またはクエリ文字列では+としてエンコードされます
特殊文字その他の文字(&、=、?、# など)は%XX形式でエンコードされます
UTF-8非ASCII文字(日本語など)はまずUTF-8バイトに変換され、その後%XXとしてエンコードされます
注意:URLの異なる部分では、エンコードルールが異なります。クエリ文字列(?以降)のスペースは通常+としてエンコードされますが、パス部分のスペースは%20としてエンコードされます。JavaScriptのencodeURIComponent()を使用すると、ほとんどのケースを正しく処理できます。

よくあるエンコード例

よく使われる文字のURLエンコードを示します:

スペース%20 または +(クエリ文字列内)
&%26
=%3D
?%3F
#%23
中国語「こんにちは」%E4%BD%A0%E5%A5%BD

利用シーン

URLエンコードはWeb開発の様々な場面で広く使われています:

URLパラメータURLクエリ文字列でパラメータを渡す(例:?name=田中&age=20)
フォーム送信HTMLフォームはapplication/x-www-form-urlencodedエンコードでデータを送信します
HTTPリクエストGET/POSTリクエストを構築する際にパラメータをエンコードします
RESTful APIURLパスに特殊文字を含むリソース識別子を渡す
OAuthOAuth認証フローのredirect_uriなどのパラメータはエンコードが必要です
検索エンジン検索キーワードをURLで渡す際にエンコードが必要です

FAQ

Q: URLエンコードとBase64の違いは何ですか?

A: URLエンコードと Base64 はどちらも特殊文字を扱いますが、目的が異なります。URLエンコード:1)目的:特殊文字をURLで安全に送信する。2)形式:%XX(例:%20)。3)用途:URLパラメータ、フォーム送信。Base64:1)目的:バイナリデータをテキスト形式に変換する。2)形式:A-Z、a-z、0-9、+、/。3)用途:画像の埋め込み、JWT、メール添付。選択の指針:1)URLパラメータ:URLエンコードを使用。2)バイナリデータ:Base64を使用。3)両方を組み合わせることも可能(例:Base64エンコード後にURLエンコード)。

Q: スペースは%20と+のどちらでエンコードすべきですか?

A: スペースのエンコードはURLの位置によって異なります。%20:1)URLパス部分で使用(例:/path/hello%20world)。2)フラグメント(#以降)で使用。3)encodeURIComponent()はスペースを%20としてエンコードします。+:1)クエリ文字列で使用(?以降、例:?q=hello+world)。2)application/x-www-form-urlencoded形式では+を使用。推奨encodeURIComponent()を使って統一的に%20としてエンコードしてください。サーバーは+と%20の両方を自動的に処理します。

Q: JavaScriptでURLエンコードを使うには?

A: JavaScriptには用途の異なる3つのURLエンコード関数があります。encodeURIComponent():URIコンポーネント(パラメータ値)をエンコードします。推奨。すべての特殊文字をエンコードします(A-Z、a-z、0-9、-、_、.、~を除く)。encodeURI():完全なURIをエンコードし、URI構造文字(:、/、?、&など)を保持します。完全なURLのエンコードに適しています。escape():非推奨。
// パラメータ値をエンコード(推奨) encodeURIComponent('こんにちは 世界'); // '%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%E4%B8%96%E7%95%8C' // 完全なURLをエンコード encodeURI('https://example.com/こんにちは'); // 'https://example.com/%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF'
デコードdecodeURIComponent()またはdecodeURI()を使用してください。

Q: 日本語文字はどのようにURLエンコードされますか?

A: 非ASCII文字はまずUTF-8バイトに変換され、その後%XX形式でエンコードされます。:“こんにちは” → UTF-8バイト → URLエンコード:%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AFJavaScript encodeURIComponent('こんにちは')はUTF-8変換を自動的に処理します。注意:1)異なるエンコーディング(GBKなど)では異なる結果になります。2)サーバーはUTF-8を正しくデコードする必要があります。3)現代のWebアプリケーションは統一してUTF-8エンコーディングを使用しています。

Q: URLエンコードはデータサイズを増加させますか?

A: はい、URLエンコードはデータサイズを増加させます。増加量は文字の種類によって異なります。ASCII文字:1)英字、数字:エンコードされないのでサイズ変化なし。2)特殊文字(&、=など):3バイト(%XX)にエンコードされ、200%増加。非ASCII文字:1)UTF-8エンコーディング:文字ごとに1〜4バイト、各バイトが%XX(3バイト)になります。最適化:1)大量のデータ送信にはPOSTリクエストを使用する。2)JSONフォーマットの使用を検討する(URLエンコード不要)。

Q: URLエンコードとHTMLエンティティエンコードの違いは何ですか?

A: URLエンコードとHTMLエンティティエンコードは異なる場面で使用されます。URLエンコード:1)目的:URLで特殊文字を送信する。2)形式:%XX(例:%20)。3)用途:URLパラメータ、フォーム送信。HTMLエンティティエンコード:1)目的:HTMLで特殊文字を表示する。2)形式:&name;(例:&lt;)または&#number;(例:&#60;)。3)用途:HTMLコンテンツ、属性値。:< → URLエンコード:%3C、HTMLエンティティ:&lt;または&#60;

Use Cases

推奨:URLクエリパラメータ

URLクエリ文字列でパラメータを渡すことは、URLエンコードの最も一般的な用途です。クエリ文字列は?で始まり、パラメータは&で区切られ、パラメータ名と値は=で接続されます。パラメータ値に特殊文字(スペース、&、=など)が含まれる場合は、URLエンコードが必要です。JavaScriptのencodeURIComponent()でパラメータ値を正しくエンコードできます。

Recommended Configuration:
  • ✅ encodeURIComponent()でパラメータ値をエンコードする
  • ✅ URLSearchParams APIでクエリ文字列を構築する
  • ✅ サーバー側で対応するデコード関数を使用する
  • ❌ URLパラメータを手動で連結しない
  • 💡 大量データにはPOSTリクエストを検討する
推奨:HTMLフォーム送信

HTMLフォームはapplication/x-www-form-urlencodedエンコードでデータを送信します。これはURLエンコードの一種です。フォームデータはkey=value&key=value形式で送信され、スペースは+、その他の特殊文字は%XXとしてエンコードされます。現代のブラウザはフォームエンコードを自動的に処理するため、通常は手動でエンコードする必要はありません。ただし、JavaScript(Fetch APIなど)でフォームデータを構築する場合は、手動でエンコードが必要です。

Recommended Configuration:
  • ✅ FormData APIでエンコードを自動処理する
  • ✅ URLSearchParamsでフォームデータを構築する
  • ✅ サーバー側でフォームデータを正しくデコードする
  • 💡 ファイルアップロードにはmultipart/form-dataを使用する
推奨:RESTful APIパスパラメータ

RESTful APIでは、リソース識別子に特殊文字(スペース、スラッシュなど)が含まれることがあり、URLエンコードが必要です。例えば、/users/山田 太郎/users/山田%20太郎としてエンコードする必要があります。encodeURIComponent()を使用してパスパラメータをエンコードし、APIがリソース識別子を正しく解析できるようにしてください。

Recommended Configuration:
  • ✅ encodeURIComponent()でパスパラメータをエンコードする
  • ✅ サーバー側でパスパラメータを正しくデコードする
  • ✅ リソース識別子に名前の代わりにIDの使用を検討する
  • 💡 URLテンプレートライブラリ(path-to-regexpなど)を使用する
推奨:OAuth認証

OAuth認証フローのredirect_uristateなどのパラメータにはURLエンコードが必要です。例えば、redirect_uriは通常クエリパラメータを含む完全なURLであり、パラメータ値として渡す前に全体をエンコードする必要があります。encodeURIComponent()でこれらのパラメータをエンコードし、OAuthサーバーが正しく解析できるようにしてください。

Recommended Configuration:
  • ✅ encodeURIComponent()でredirect_uriをエンコードする
  • ✅ encodeURIComponent()でstateパラメータをエンコードする
  • ✅ デコードしたredirect_uriが有効であることを確認する
  • 💡 OAuthライブラリ(Passport.jsなど)で自動処理する
推奨:検索エンジンクエリ

URLで検索キーワードを渡す際にはURLエンコードが必要です。例えば、Googleで“こんにちは 世界”を検索するURLは https://www.google.com/search?q=こんにちは+世界です。検索エンジンはURLエンコードを自動的に処理するため、ユーザーが手動でエンコードする必要は通常ありません。ただし、検索URL(自動リダイレクトなど)を構築する場合は、encodeURIComponent()を使用して検索キーワードをエンコードしてください。

Recommended Configuration:
  • ✅ encodeURIComponent()で検索キーワードをエンコードする
  • ✅ 複数のキーワードを処理する(スペースまたは+で区切る)
  • ✅ 検索エンジンのAPIの使用を検討する
  • 💡 URLSearchParamsで検索URLを構築する
推奨:URL短縮サービス

URL短縮サービス(bit.lyなど)は長いURLを保存・送信する前にエンコードする必要があります。長いURLには特殊文字(クエリパラメータなど)が含まれることがあり、URLエンコードが必要です。encodeURIComponent()を使用して長いURLをエンコードし、短縮サービスが正しく解析・復元できるようにしてください。なお、短縮サービスはエンコードされたURLを再度エンコードすることが多いため、デコードに複数回の処理が必要な場合があります。

Recommended Configuration:
  • ✅ encodeURIComponent()で長いURLをエンコードする
  • ✅ デコードしたURLが有効であることを確認する
  • ✅ 多重エンコードのケースを処理する
  • 💡 短縮サービスのAPIを使用する

ベストプラクティスの推奨事項

  • URLパラメータ値のエンコードにはencodeURIComponent()を、完全なURLのエンコードにはencodeURI()を使用してください。
  • クエリ文字列のスペースは+、パスでは%20としてエンコードされます。encodeURIComponent()を使って統一的に%20としてエンコードしてください。
  • 非ASCII文字はUTF-8エンコーディングを使用します。サーバーが正しくデコードできるようにしてください。
  • URLパラメータを手動で連結しないでください。URLSearchParams APIまたはFormData APIを使用してエンコードを自動処理してください。
  • URLエンコードはデータサイズを増加させます。大量のデータにはPOSTリクエストまたはJSONフォーマットを使用してください。
  • URLインジェクション攻撃を防ぐために、デコードしたURLの有効性を確認してください。

ディスカッション&フィードバック

0件のコメント
自分