URL エンコード/デコード
URLのパーセントエンコーディング変換をリアルタイムで実行できる無料オンラインツール。encodeURI / encodeURIComponent の両方式に対応、日本語URL・絵文字・特殊文字も正しく変換、文字化け対策の解説付き。ブラウザ完結で機密URLも安全に処理できます。
URLの日本語や特殊文字をパーセントエンコーディングでエンコード・デコードするツールです。encodeURIとencodeURIComponentの両方式に対応し、文字化けの原因を解説付きで案内します。
💡 encodeURIComponent: クエリパラメータの値に使用。/, :, ?, # 等もエンコードします。
// URL エンコード/デコードの機能と特徴
URLエンコードの仕組み
URLエンコード(パーセントエンコーディング)は、URLに使用できない文字をUTF-8でバイト列に変換し、各バイトを「%XX」(XXは16進数)の形式で表現します。例えば日本語の「あ」はUTF-8で3バイト(E3 81 82)なので、「%E3%81%82」に変換されます。
文字化けの原因と対策
URLの文字化けは、エンコード時とデコード時で文字コードが異なることが主な原因です。現在の標準はUTF-8ですが、古いシステムではShift_JISやEUC-JPが使われていることがあります。文字化けが発生した場合は、まずエンコーディングの不一致を疑いましょう。
RFC 3986の規定
RFC 3986はURIの構文を定義する標準仕様です。予約文字(:, /, ?, #, @など)と非予約文字(英数字, -, _, ., ~)を明確に区別し、それ以外の文字はパーセントエンコーディングする必要があると規定しています。encodeURIComponentはこの仕様に基づき、予約文字も含めてエンコードします。
クエリパラメータとフラグメントの扱い
URL `https://example.com/path?q=値&p=2#section` のうち、パス部分・クエリ値・フラグメントでエンコードすべき範囲が異なります。クエリ値やパスセグメントには `encodeURIComponent`、URL全体には `encodeURI` を使うのが基本です。区切り記号(&, =, /)をそのまま残したい場合と、値として扱いエスケープすべき場合を意識して使い分けます。
// URL エンコード/デコードに関するよくある質問
- URLエンコードとは何ですか?
- URLに使用できない文字(日本語・スペース・特殊記号など)を「%XX」形式の安全な文字列に変換する仕組みで、RFC 3986で標準化されています。パーセントエンコーディングとも呼ばれます。本ツールでは encodeURI と encodeURIComponent の2方式を選択でき、日本語URL・絵文字・特殊文字を含む文字列をリアルタイム変換できます。
- encodeURIとencodeURIComponentの違いは?
- encodeURIは「URL全体」を対象とし、スラッシュ `/`・コロン `:`・疑問符 `?` などのURL構造文字はエンコードしません(URLとして使える形に保ちます)。encodeURIComponentは「パラメータ値や1つのセグメント」を対象とし、`/` や `?` も含めほぼ全ての非英数字をエンコードします。クエリ値には常に encodeURIComponent、URL全体の整形には encodeURI を使うのが定石です。
- 日本語を含むURLもエンコードできますか?
- はい、UTF-8として日本語をパーセントエンコーディングに変換します。「あ」は `%E3%81%82`、「東京」は `%E6%9D%B1%E4%BA%AC` のように3バイト×文字数で表現されます。Twitter・GoogleなどのSNSシェアURL、検索クエリ、Slackリンクなどで日本語を扱う際に必須の変換です。
- スペースは「+」と「%20」のどちらに変換されますか?
- encodeURIComponentでは `%20` に変換されます。`+` 形式は `application/x-www-form-urlencoded`(HTMLフォーム送信)で使われる古い方式で、現在のURL標準(RFC 3986)では `%20` が推奨されています。URLのパスやクエリには `%20`、フォーム送信時には `+` が使われるので、用途で使い分けてください。
- 文字化けが起きるのはなぜ?
- 主因は (1) エンコード時とデコード時の文字コード不一致(UTF-8 ↔ Shift_JIS等)、(2) 二重エンコード(`%` が `%25` になる)、(3) URLパラメータの `+` を空白として解釈すべき箇所で復元できていない、です。本ツールはUTF-8専用ですが、明らかにShift_JISでエンコードされた古いURL(`%93%FA%96%7B` 等)に出会った場合は別途変換が必要です。
- 半角の「+」を含む文字列をエンコードしたい
- `+` をクエリ値の一部として渡したい場合、サーバ側で空白に解釈されるのを防ぐためにエンコードして `%2B` にする必要があります。encodeURIComponent("+") は `%2B` を返します。逆にフォーム送信由来のURLをデコードする時は `+` を半角空白として復元する処理が別途必要になる場合があります。
- 既にエンコード済みのURLを再エンコードしたらどうなる?
- `%` 自体が再エンコードされて `%25` になるため、二重エンコードのバグが発生します。例えば `%E3%81%82` を再度 encodeURIComponent すると `%25E3%2581%2582` となり、デコードでは元に戻りません。エンコード前に「既にエンコード済みかどうか」を確認することが重要です。本ツールではエンコード/デコード モードを明示できるので二重変換を防げます。
- URL中の#(フラグメント)はエンコードされますか?
- encodeURIでは `#` はURL構造文字として残されますが、encodeURIComponentでは `%23` にエンコードされます。`#` をクエリ値や検索文字列の一部として渡したい場合(例 `q=#hashtag`)は encodeURIComponent で処理し `%23` にする必要があります。さもないとブラウザがフラグメント開始位置と解釈してしまいます。
- パスとクエリでエンコード方式を変える理由は?
- URLは `https://host/path/segment?key=value#fragment` のように構造を持ち、`/` や `?` は構造文字としての意味があります。パスに値として `/` を含めたい場合(例 ファイル名に `/` が入る)は encodeURIComponent で `%2F` に変換する必要があります。逆にURL全体を整形する用途なら encodeURI で構造を保ったまま日本語等だけをエンコードするのが適切です。
- データはサーバーに送信されますか?
- いいえ、すべてブラウザ内のJavaScriptで処理し、入力URLや変換結果はサーバーに送信しません。社内システムのURL・APIキー入りクエリ・OAuthのstate値など機密性の高いURLも安全にエンコード/デコードできます。
// URL エンコード/デコードの使い方
-
テキストを入力
エンコードまたはデコードしたいURLやテキストを入力欄に貼り付けます。`?key=日本語&q=東京` のようなクエリ文字列、`%E3%81%82` のようなエンコード済み文字列、いずれも受け付けます。
-
モードと方式を選択
エンコード/デコードのモード、および encodeURI(URL全体用)/ encodeURIComponent(クエリ値用)の方式を選択します。URLの一部分だけを変換したい場合は encodeURIComponent を推奨します。
-
結果を確認・コピー
リアルタイムで変換結果が表示されます。コピー ボタンで結果をクリップボードに保存し、そのままブラウザ・curl・API リクエストに貼り付けて利用できます。
カテゴリ エンコード