URL Encoding エンコード & デコード
無料オンライン URL Encoding エンコード & デコード ツール。100% ローカル処理 — データは端末の外に出ません。
結果がここに表示されます...
入力 → エンコード
Usage Guide
URLエンコードについて
URLエンコード( パーセントエンコーディングとも呼ばれ、 RFC 3986で定義)は、URL内の特殊文字を安全な文字に変換するエンコード方式です。URLはASCII文字のサブセット(英字、数字、一部の特殊文字)のみを許可しており、その他の文字(スペース、日本語、特殊記号など)はURLで使用する前にエンコードする必要があります。URLエンコードは各バイトを%XX形式に変換します。XXはそのバイトの 16進数 表現です。URLエンコードはWeb開発の基礎であり、URLパラメータ、フォーム送信、HTTPリクエストなど様々な場面で広く利用されています。
使い方
URLエンコード・デコードは非常に簡単です:
エンコードルール
URLエンコードは以下のルールに従います:
encodeURIComponent()を使用すると、ほとんどのケースを正しく処理できます。よくあるエンコード例
よく使われる文字のURLエンコードを示します:
利用シーン
URLエンコードはWeb開発の様々な場面で広く使われています:
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%AF。JavaScript: 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;(例:<)または&#number;(例:<)。3)用途:HTMLコンテンツ、属性値。例:< → URLエンコード:%3C、HTMLエンティティ:<または<。
Use Cases
推奨:URLクエリパラメータ
URLクエリ文字列でパラメータを渡すことは、URLエンコードの最も一般的な用途です。クエリ文字列は?で始まり、パラメータは&で区切られ、パラメータ名と値は=で接続されます。パラメータ値に特殊文字(スペース、&、=など)が含まれる場合は、URLエンコードが必要です。JavaScriptのencodeURIComponent()でパラメータ値を正しくエンコードできます。
- ✅ encodeURIComponent()でパラメータ値をエンコードする
- ✅ URLSearchParams APIでクエリ文字列を構築する
- ✅ サーバー側で対応するデコード関数を使用する
- ❌ URLパラメータを手動で連結しない
- 💡 大量データにはPOSTリクエストを検討する
推奨:HTMLフォーム送信
HTMLフォームはapplication/x-www-form-urlencodedエンコードでデータを送信します。これはURLエンコードの一種です。フォームデータはkey=value&key=value形式で送信され、スペースは+、その他の特殊文字は%XXとしてエンコードされます。現代のブラウザはフォームエンコードを自動的に処理するため、通常は手動でエンコードする必要はありません。ただし、JavaScript(Fetch APIなど)でフォームデータを構築する場合は、手動でエンコードが必要です。
- ✅ FormData APIでエンコードを自動処理する
- ✅ URLSearchParamsでフォームデータを構築する
- ✅ サーバー側でフォームデータを正しくデコードする
- 💡 ファイルアップロードにはmultipart/form-dataを使用する
推奨:RESTful APIパスパラメータ
RESTful APIでは、リソース識別子に特殊文字(スペース、スラッシュなど)が含まれることがあり、URLエンコードが必要です。例えば、/users/山田 太郎は/users/山田%20太郎としてエンコードする必要があります。encodeURIComponent()を使用してパスパラメータをエンコードし、APIがリソース識別子を正しく解析できるようにしてください。
- ✅ encodeURIComponent()でパスパラメータをエンコードする
- ✅ サーバー側でパスパラメータを正しくデコードする
- ✅ リソース識別子に名前の代わりにIDの使用を検討する
- 💡 URLテンプレートライブラリ(path-to-regexpなど)を使用する
推奨:OAuth認証
OAuth認証フローのredirect_uriやstateなどのパラメータにはURLエンコードが必要です。例えば、redirect_uriは通常クエリパラメータを含む完全なURLであり、パラメータ値として渡す前に全体をエンコードする必要があります。encodeURIComponent()でこれらのパラメータをエンコードし、OAuthサーバーが正しく解析できるようにしてください。
- ✅ encodeURIComponent()でredirect_uriをエンコードする
- ✅ encodeURIComponent()でstateパラメータをエンコードする
- ✅ デコードしたredirect_uriが有効であることを確認する
- 💡 OAuthライブラリ(Passport.jsなど)で自動処理する
推奨:検索エンジンクエリ
URLで検索キーワードを渡す際にはURLエンコードが必要です。例えば、Googleで“こんにちは 世界”を検索するURLは https://www.google.com/search?q=こんにちは+世界です。検索エンジンはURLエンコードを自動的に処理するため、ユーザーが手動でエンコードする必要は通常ありません。ただし、検索URL(自動リダイレクトなど)を構築する場合は、encodeURIComponent()を使用して検索キーワードをエンコードしてください。
- ✅ encodeURIComponent()で検索キーワードをエンコードする
- ✅ 複数のキーワードを処理する(スペースまたは+で区切る)
- ✅ 検索エンジンのAPIの使用を検討する
- 💡 URLSearchParamsで検索URLを構築する
推奨:URL短縮サービス
URL短縮サービス(bit.lyなど)は長いURLを保存・送信する前にエンコードする必要があります。長いURLには特殊文字(クエリパラメータなど)が含まれることがあり、URLエンコードが必要です。encodeURIComponent()を使用して長いURLをエンコードし、短縮サービスが正しく解析・復元できるようにしてください。なお、短縮サービスはエンコードされたURLを再度エンコードすることが多いため、デコードに複数回の処理が必要な場合があります。
- ✅ encodeURIComponent()で長いURLをエンコードする
- ✅ デコードしたURLが有効であることを確認する
- ✅ 多重エンコードのケースを処理する
- 💡 短縮サービスのAPIを使用する
ベストプラクティスの推奨事項
- URLパラメータ値のエンコードにはencodeURIComponent()を、完全なURLのエンコードにはencodeURI()を使用してください。
- クエリ文字列のスペースは+、パスでは%20としてエンコードされます。encodeURIComponent()を使って統一的に%20としてエンコードしてください。
- 非ASCII文字はUTF-8エンコーディングを使用します。サーバーが正しくデコードできるようにしてください。
- URLパラメータを手動で連結しないでください。URLSearchParams APIまたはFormData APIを使用してエンコードを自動処理してください。
- URLエンコードはデータサイズを増加させます。大量のデータにはPOSTリクエストまたはJSONフォーマットを使用してください。
- URLインジェクション攻撃を防ぐために、デコードしたURLの有効性を確認してください。