URLエンコード・デコード

どちらの欄に書いても、もう片方がすぐ変わります。壊れた %、二重エンコード、Shift_JIS の古い URL も読めます。

できること

  • 「元の文字」と「エンコード後」の2つの欄が連動。どちらに書いても、もう片方がすぐ変わります
  • 部品(encodeURIComponent)・URL全体(encodeURI)・フォーム(空白が +)の3つの書き方と、日本語などだけを変換する設定
  • %E3%81 のような途切れた文字や %ZZ・単独の % があっても止まらず、読めない部分の位置と理由を示します
  • 二重エンコード(%2520)を見つけて、ボタン1つでもう一度デコードできます
  • UTF-8 に加えて Shift_JIS・EUC-JP の古い日本語 URL のエンコード・デコードに対応
  • URL をスキーム・ホスト・パス・クエリに分解。日本語ドメインの punycode も表示し、クエリの表を書き換えると URL を組み立て直します

こんなときに

検索結果やアクセス解析の URL を読む

%E6%9D%B1%E4%BA%AC のような URL が、どんな言葉で検索されたのかを確かめる。

プログラムで使う値を作る

API のクエリに入れる日本語を encodeURIComponent と同じ形にして貼り付ける。

文字化けした古い URL

%82%A0 のような Shift_JIS の URL を、文字コードを切り替えて読める形に戻す。

共有用の URL を整える

長い URL のクエリを表で見て、不要なパラメータを消してから組み立て直す。

プライバシー

入力した文字や URL はブラウザの中だけで変換し、どこにも送信しません。書き方・文字コードの設定だけを、次に開いたときのためにこの端末(ブラウザの保存領域)に残します。入力した内容は保存しません。

よくある質問

なぜ URL の日本語は %E3%81%82 のようになるのですか?

URL に使える文字は英数字と一部の記号だけと決まっているからです。日本語は UTF-8 のバイト列にしてから、1バイトずつ「%」と16進数2桁で書きます。「あ」は E3 81 82 の3バイトなので %E3%81%82 になります。

「部品」と「URL全体」は何が違いますか?

「部品」(encodeURIComponent)は & = / ? # なども %エンコードするので、クエリの値など URL の一部に入れる文字列に使います。「URL全体」(encodeURI)はこれらの区切りを残すので、URL をまるごと変換するときに使います。値に & が入っていると、URL全体のほうでは区切りと区別できなくなります。

空白は %20 と + のどちらですか?

どちらも使われます。フォームの送信(application/x-www-form-urlencoded)では空白を + にし、それ以外では %20 にするのが基本です。デコードのときも、+ を空白として読むのはフォームのときだけです。迷ったら %20 が安全です。

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

古い日本語のサイトでは、URL を Shift_JIS や EUC-JP で書いていることがあります。「あ」は Shift_JIS では %82%A0 です。文字コードを切り替えると読めることがあります。UTF-8 で読めない部分は、位置と理由を表示します。

%2520 のような文字列は何ですか?

二重にエンコードされた文字列です。空白の %20 をもう一度エンコードすると、% が %25 になって %2520 になります。このツールは見つけると知らせ、「もう一度デコード」で元に戻せます。

入力した URL はどこかに送られますか?

送られません。変換はすべてお使いのブラウザの中で行います。トークンなどを含む URL でも外には出ません。

関連ツール

書き方

クエリの値やパスの一部に入れる文字列向け。& = / ? # も %エンコードします(encodeURIComponent と同じ)。

古い日本語のサイトの URL は Shift_JIS や EUC-JP のことがあります。文字化けしたら切り替えてみてください。

変換した文字

    %エンコードが必要な文字はありません。

    変換はすべてこのブラウザの中で行い、入力した文字や URL はどこにも送信しません。

    選んだ文字のバイト

    「元の文字」の欄でカーソルを置いた文字を表示します。

    元の文字を入れると、ここに 1 文字ずつの中身を表示します。

    URLを分解

    URL を入れると、スキーム・ホスト・パス・クエリ・フラグメントに分けて表示します。