URLデコード・エンコード

URLデコード・エンコードツール(文字化け対応)

%E6%9D%B1%E4%BA%AC のようなURLを貼り付けると、すぐに読める日本語に戻します。エンコードを選べば、日本語をリンクに使える形に変換できます。URL全体ならホスト、パス、デコードしたクエリパラメータに分けて表示し、古いサイトのShift_JISやEUC-JPのURLも文字化けさせずに読み取ります。処理はすべてブラウザの中で行われます。

変換の向き
  • デコードしたテキスト

    https://www.example.jp/search?q=東京 ラーメン&page=2&ref=/top?lang=ja#results

デコードしたパーセントコード21
エンコードの重なり1
プラス記号(+)スペースとして読んだ
プロトコルhttps:
ホストwww.example.jp
パス/search
フラグメントresults

クエリパラメータはブラウザと同じ読み方をします。+ はスペースです。

クエリパラメータ(デコード後)
#名前値
1q東京 ラーメン
2page2
3ref/top?lang=ja

計算はお使いの端末内で完結 · 計算式は既知の値で検証済み · 検証方法について

URLデコード・エンコードの使い方

  1. デコードするときは、URLや %E6%9D%B1%E4%BA%AC のようなパーセントエンコードされたテキストを貼り付けます。すぐに読める形(この例なら「東京」)が表示されます。
  2. URL全体を貼り付けると、プロトコル、ホスト(日本語ドメインはUnicode表記も)、パス、フラグメント、そしてデコードしたクエリパラメータの一覧も表示されます。
  3. 「+ をスペースとして読む」は、検索URLやフォームから送られたデータではオンのままにします。それ以外のテキストで + を記号として残したいときはオフにします。
  4. エンコードするときはエンコードを選び、テキストを入力して方式を選びます。クエリの値に入れるなら「URLの一部」がふつうの選択です。
  5. 結果の横のコピーを押します。正しくない % があれば、何文字目かを示します。

パーセントエンコーディングのしくみ

URLに使える文字は一部の半角英数字と記号だけで、しかも /(パスの区切り)、?(クエリの始まり)、& と =(パラメータの区切り)、#(フラグメント)には役目があります。それ以外の文字や、データとして使う記号は、% と16進数2桁(1バイトの値)で書きます。これがRFC 3986で決められたパーセントエンコーディングです。

半角スペースはバイト値32、16進数で20なので %20 になります。日本語はまずUTF-8のバイト列に変換され、1バイトずつコードになります。ひらがなや漢字はほとんどがUTF-8で3バイトなので、「東」は %E6%9D%B1、「東京」は %E6%9D%B1%E4%BA%AC と、1文字が9文字に増えます。日本語のURLが長くなるのはこのためです。デコードはその逆で、コードをバイトに戻し、UTF-8として読みます。英数字と - . _ ~ はエンコードの必要がなく、16進数は大文字でも小文字でもかまいません。

URLデコードで文字化けするとき:Shift_JIS と EUC-JP

パーセントコードが表しているのは文字ではなくバイトです。同じ日本語でも、どの文字コードでバイトにしたかでURLはまったく違います。現在のWebはUTF-8が標準ですが、古い掲示板やショッピングサイト、Windowsの古い業務システムなどには、Shift_JIS や EUC-JP でエンコードしたURLが今も残っています。多くのURLデコーダーはUTF-8しか想定していないため、こうしたURLを入れると「�」だらけになります。

このツールは、まずUTF-8として読み、正しくなければ Shift_JIS、次に EUC-JP として読み直します。どれで読んだかは結果の文字コードの行に表示されます。次の表はこのツールのコードで実際にデコードした結果です(バイト列はPythonの文字コード変換で作成)。

文字UTF-8Shift_JISEUC-JPデコード結果(判定した文字コード)
日本語%E6%97%A5%E6%9C%AC%E8%AA%9E%93%FA%96%7B%8C%EA%C6%FC%CB%DC%B8%EC日本語(Shift_JIS)、日本語(EUC-JP)
東京%E6%9D%B1%E4%BA%AC%93%8C%8B%9E%C5%EC%B5%FE東京(Shift_JIS)、東京(EUC-JP)
ラーメン%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3%83%89%81%5B%83%81%83%93%A5%E9%A1%BC%A5%E1%A5%F3ラーメン(Shift_JIS)、ラーメン(EUC-JP)
検索%E6%A4%9C%E7%B4%A2%8C%9F%8D%F5%B8%A1%BA%F7検索(Shift_JIS)、検索(EUC-JP)
渋谷 カフェ%E6%B8%8B%E8%B0%B7%20%E3%82%AB%E3%83%95%E3%82%A7%8Fa%92J%20%83J%83t%83F%BD%C2%C3%AB%20%A5%AB%A5%D5%A5%A7渋谷 カフェ(Shift_JIS)、スツテォ ・ォ・ユ・ァ(Shift_JIS)

「渋谷」のShift_JISが %8Fa%92J のように英字まじりなのは、2バイト目が英字と同じ値(0x61は a、0x4A は J)になる文字があり、エンコードする側がそのまま残すことがあるためです。このツールはそうしたURLも正しく読みます。また「ソ」「表」「能」などは2バイト目が 0x5C(バックスラッシュ、日本語環境では ¥)で、昔から「ダメ文字」と呼ばれ、プログラムで文字化けや誤動作の原因になってきました。%83%5C%83t%83g は「ソフト」と正しくデコードされます。

文字化けの見分け方

なお、エンコードは常にUTF-8で行います。Shift_JISでエンコードしたURLが必要なら、プログラム側で文字コードを指定してください(Pythonなら urllib.parse.quote('東京', encoding='shift_jis') で %93%8C%8B%9E)。

encodeURIComponent・encodeURI・フォーム形式の違い

4つの方式は、どの文字をそのまま残すかが違います(表はこのツールで変換した結果)。

文字URLの一部(encodeURIComponent)URL全体(encodeURI)フォームデータRFC 3986 厳密
半角スペース%20%20+%20
(全角スペース)全角スペース%E3%80%80%E3%80%80%E3%80%80%E3%80%80
#シャープ%23#%23%23
%パーセント%25%25%25%25
&アンパサンド%26&%26%26
+プラス%2B+%2B%2B
/スラッシュ%2F/%2F%2F
=イコール%3D=%3D%3D
?疑問符%3F?%3F%3F
!感嘆符!!%21%21
~チルダ~~%7E~
あひらがな%E3%81%82%E3%81%82%E3%81%82%E3%81%82
東漢字%E6%9D%B1%E6%9D%B1%E6%9D%B1%E6%9D%B1
ア半角カナ%EF%BD%B1%EF%BD%B1%EF%BD%B1%EF%BD%B1
😀絵文字%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80

全角スペースは記号に見えても普通の文字なので、UTF-8の3バイト %E3%80%80 になります。検索キーワードの区切りに全角スペースを使うと、半角スペース(%20 や +)とは別物として送られます。

+ と %20 の違い・二重エンコード

どちらもスペースを表しますが、+ がスペースになるのはクエリ文字列の中だけです。フォーム形式ではスペースを + と書くので、検索サイトのURLは ?q=東京+ラーメン のようになります。RFC 3986では %20 と書き、パスの中の + はただのプラス記号です。値としてプラス記号を送るときは %2B にします。そのため C%2B%2B は「C++」にデコードされます。

エンコード済みのテキストをもう一度エンコードすると、% が %25 になります。スペースは %20、さらに %2520 となります。リダイレクト用のリンクや計測用のパラメータなど、2つのシステムを通るURLでよく起こります。このツールはパーセントコードが残っているあいだデコードを繰り返し、何重だったかを表示します。a%252520b は3重で、「a b」になります。1段ずつ戻したいときはオプションをオフにします。

計算例:検索URLを読む

入力欄のサンプルは、ある検索ページのURLです:https://www.example.jp/search?q=%E6%9D%B1%E4%BA%AC+%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3&page=2&ref=%2Ftop%3Flang%3Dja#results。パーセントコードは21個、エンコードは1重です。デコードすると次のようになります。

https://www.example.jp/search?q=東京 ラーメン&page=2&ref=/top?lang=ja#results

ホストは www.example.jp、パスは /search です。クエリパラメータの表には3個のパラメータが並びます:q =「東京 ラーメン」、page =「2」、ref =「/top?lang=ja」。「東京」は6バイト、「ラーメン」は12バイトで、あいだの + はスペースになりました。最後の値はそれ自体がクエリ付きのパスなので、/、?、= がエンコードされています。そのままだと = の位置でパラメータが途中で切れてしまうからです。フラグメント #results はサーバーには送られません。

日本語ドメイン(Punycode)

「日本語.jp」のような日本語ドメイン名は、xn-- で始まるPunycode(RFC 3492)という英数字の形で通信されます。「日本語.jp」は xn--wgv71a119e.jp、IANAのテスト用ドメイン「例え.テスト」は xn--r8jz45g.xn--zckzah です。どちらの形を貼り付けても、ブラウザが送る形とUnicode表記の両方を表示します。Punycodeはパーセントエンコーディングとは別物なので、ドメイン名を % で書くことはありません。

ヒントと制限

デコードとエンコードはブラウザの中で行われ、貼り付けた内容はアップロードも保存もされません。再読み込みすると消えます。URLにはセッションIDや個人情報が含まれることも多いので、この点は大切です。

よくある質問

URLの %E3%81%82 のような文字は何ですか?

パーセントエンコードされた日本語です。%E3%81%82 はひらがなの「あ」をUTF-8にした3バイト(E3 81 82)です。URLを貼り付ければ、すべてのコードを読める文字に戻します。

URLデコードすると文字化けします。

元のURLがUTF-8ではなくShift_JISかEUC-JPでエンコードされている可能性が高いです。このツールはUTF-8として読めなければShift_JIS、EUC-JPの順に読み直し、使った文字コードを表示します。結果が半角カタカナばかりなら、元はEUC-JPです。

%20 と + の違いは何ですか?

どちらもスペースです。ただし + がスペースになるのはクエリ文字列(? のあと)とフォームデータの中だけで、パスの中では + はプラス記号です。プラス記号そのものを送るときは %2B と書きます。

encodeURI と encodeURIComponent はどう使い分けますか?

encodeURI はURL全体に使い、/ ? & = # などURLの構造を作る記号を残します。encodeURIComponent はクエリの値1つやパスの1区間に使い、それらの記号もエンコードするので、周りのURLを壊しません。

URLに %2520 が入っているのはなぜですか?

二重にエンコードされています。1回目でスペースが %20 になり、2回目で % が %25 になりました。このツールは重なりを検出して、すべて元に戻します。

貼り付けたURLはどこかに送られますか?

いいえ。デコードとエンコードはブラウザのJavaScriptで行い、サーバーには何も送りません。貼り付けた内容も保存しません。

この計算ツールをあなたのサイトに埋め込む

ウェブサイトやブログで無料でお使いいただけます。表示したい場所に次のコードを貼り付けてください。

最終更新日:2026年10月16日

メニュー

カテゴリー

お金・ローンの計算ツール13種類の計算ツールビジネス・買い物の計算ツール5種類の計算ツール健康・ダイエットの計算ツール6種類の計算ツール数学・学習の計算ツール14種類の計算ツール日付・時間の計算ツール10種類の計算ツール年中行事までのカウントダウン7種類の計算ツール暮らしに役立つツール15種類の計算ツールPDF・画像の変換ツール12種類の計算ツールマイクテスト・カメラテスト・録音ツール6種類の計算ツールエンジニア向け開発ツール9種類の計算ツール

CalcWorthy

運営者情報お問い合わせプライバシーポリシー利用規約

言語

言語
日本語JapaneseEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese简体中文Simplified Chinese