コンテンツへスキップ

URLエンコード・デコード

ブラウザ内処理ファイルはアップロードされませんこの処理はブラウザ内で完結します。ファイルはどこにも送信されません。

日本語や記号を含む文字列を、URLに載せられる %XX 形式に変換します。値として使う場合とURL全体の場合で結果が違うので、両方を並べて出します。逆に、%E3%81%82 のような文字列を読める形に戻すこともできます。

入力

出力

文字列を入れると、変換結果がここに出ます。
もとの文字列https://example.jp/検索?q=猫URL全体としてhttps://example.jp/%E6%A4%9C%E7%B4%A2?q=%E7%8C%AB値として使うなら「:」「/」「?」「=」も %3A %2F %3F %3D になります。
同じ文字列でも、値として載せるのかURL全体なのかで結果が違う。「値」は / や ? も含めて全部を %XX にし、「URL全体」は区切り記号を区切りとして残す。
ツール一覧

特長

2つの結果を並べて出す
同じ文字列でも、クエリの値として載せるのか URL 全体を渡すのかで結果が違います。値として符号化すると「/」「?」「&」「=」まで %XX になり、URL 全体として符号化するとそれらは区切りとして残ります。どちらが要るかを先に決めさせる代わりに両方を出しているのは、この2つの取り違えが URL 絡みの不具合で最も多いからです。
「+」の扱いを選べる
フォーム送信の形式(application/x-www-form-urlencoded)では空白が「+」になります。一方で URL のパスに現れる「+」は文字としての プラス です。デコードのときにどちらとして読むかを切り替えられるので、「なぜか空白が + のまま残る」「+ が消えて空白になった」のどちらの状況にも合わせられます。
壊れた入力を捨てない
「%E3%81」のように途中で切れた並びがあると、多くの道具は例外を投げて何も返しません。ここでは読める部分だけを戻し、壊れている部分はそのまま残したうえで、その旨を表示します。ログから切り出した文字列を調べるときに、全部が読めないより、どこまで読めたかが分かるほうが役に立ちます。

使い方

  1. 向きを選ぶ

    エンコード(文字列 → %XX)か、デコード(%XX → 文字列)かを押します。

  2. 文字列を貼る

    入力しているそばから変換されます。エンコードでは「値として」「URL全体として」の2つの結果が同時に出ます。

  3. 必要なほうをコピーする

    それぞれにコピーのボタンが付いています。どちらを使うかは、貼り付ける先がクエリの値なのか URL 全体なのかで決めてください。

知っておくと便利なこと

なぜ日本語1文字が %XX 3つになるのか
URL に載せられるのは ASCII の一部だけなので、それ以外の文字はまずバイト列にしてから、1バイトずつ %XX の形に書き換えます。UTF-8 では、ひらがな・カタカナ・漢字はおおむね3バイトなので、1文字が %E3%81%82 のように3つ並びます。絵文字は4バイトのものが多く、%XX が4つになります。日本語のクエリを含む URL が極端に長く見えるのはこのためで、壊れているわけではありません。
二重エンコードが起きるとどうなるか
一度符号化した文字列をもう一度符号化すると、「%」自体が「%25」になります。「%E3%81%82」が「%25E3%2581%2582」になり、デコードすると元の日本語ではなく「%E3%81%82」という文字列が戻ります。リンクを開いたときに %E3%81%82 がそのまま画面に出るのは、たいていこれが原因です。デコードを2回かければ元に戻せるので、この道具の結果をもう一度入力欄に入れて確かめてください。
空白は %20 か + か
URL のパスやクエリでは %20 が正式です。「+」を空白として解釈するのはフォーム送信の形式に限った約束で、パスの中の「+」は文字としてのプラスとして扱われます。つまり同じ「+」が場所によって別の意味になります。手で URL を組み立てるときは %20 を使っておくと、どこに置いても意味が変わりません。
符号化しなくてよい文字
A-Z a-z 0-9 と、- . _ ~ の4つは「予約されていない文字」として、そのまま置けます。この道具もこれらは変換しません。一方で ! * ' ( ) は仕様上そのまま置ける場合がありますが、環境によって扱いが割れるため、値として符号化するときは変換しています。ファイル名やIDに使う文字を選べる立場なら、この予約されていない文字だけに絞っておくと、符号化の心配がなくなります。

よくある質問

どちらの結果を使えばいいですか?
クエリの値(?q= の後ろ)やパスの1区切りに入れるなら「値として」です。URL の形をした文字列を丸ごと安全にしたいなら「URL全体として」を選びます。判断に迷うときは、その文字列の中に「/」や「?」が区切りとして意味を持っているかを見てください。持っているなら URL 全体、ただの文字なら値です。
日本語のファイル名を URL に使えますか?
符号化すれば使えますが、勧めません。共有された先で二重エンコードされたり、古いソフトが %XX を解釈できずにファイル名が化けたりします。配布するファイルの名前は英数字とハイフンに寄せておくほうが、あとで面倒がありません。
メールの本文に貼った長い URL が途中で切れます。
符号化の問題ではなく、メールソフトが1行の長さで折り返しているためです。日本語を含む URL は %XX で長くなるので起きやすくなります。山括弧で囲む(<https://…>)か、短縮 URL を使うと切れにくくなります。
入力した文字列は保存されますか?
保存も送信もしません。変換はページの中だけで行われ、閉じれば消えます。
スポンサーリンク