完全無料

URL エンコーダー / デコーダー

URLとURIコンポーネントをブラウザで即座にエンコード・デコード。無料・プライベート・アップロード不要。

または

このツールについて

URL エンコーディング (正式にはパーセント エンコーディング、RFC 3986 で定義) は、URL 内で特別な意味を持つ文字 (スペース、スラッシュ、アンパサンド、ハッシュ マーク) を、パーセント記号とそれに続く 16 進数を使用した安全な形式に変換します。スペース文字は %20 (フォーム エンコードされたコンテキストでは +) になり、アンパサンドは %26 になります。このエンコーディングがないと、特殊文字はリテラル データではなく URL 構文として解釈され、URL が壊れたり、意図しない動作が発生したりする可能性があります。

関連しているが異なる 2 つのエンコーディングが存在します。標準の URL コンポーネントのエンコードでは、予約されていない文字セット (A ~ Z、a ~ z、0 ~ 9、ハイフン、アンダースコア、ピリオド、チルダ) 以外のすべてに対して % エスケープが使用されます。フォームエンコードされたバリアント (application/x-www-form-urlencoded) はさらにスペースをプラス記号として扱い、他の一部の文字には異なるルールを使用します。 JavaScript の encodeURIComponent は厳密なコンポーネント エンコーディングを使用します。 encodeURI は、URL 構造文字を保持する、より寛容な形式を使用します。

このツールはエンコードとデコードの両方を提供します。エンコード モードでは、エスケープが必要な各文字を %HH 形式でラップします。デコード モードでは、変換が逆になります。どちらも組み込みの JavaScript URL 関数を使用してブラウザ内で完全に実行されるため、データはどこにも送信されません。

URLをエンコードまたはデコードする理由

URL にデータ (クエリ文字列パラメータ、ユーザー入力を含むパス セグメント、リダイレクト ターゲット) が含まれる場合は常に、適切なエンコードが必要です。エンコードに失敗すると、特殊文字が表示されたときに URL が壊れたり、パラメータ境界がクエリ文字列に漏れたり (&x=1 が別のパラメータに変換されたり)、不正なリクエストとして Web サーバーによってブロックされたりする URL が生成されます。

デコードはその逆で、エンコードされた URL から元のデータを抽出します。ブラウザのアドレス バーには、エンコードされた形式で URL が表示されることがよくあります。デコードすると、実際に何が意図されていたのかが明らかになります。ロギング、デバッグ、セキュリティ分析はすべて、元のパラメータとパスを示すデコードされた URL から恩恵を受けます。

使い方

文字列を貼り付け、方向を選択します。

  1. エンコードまたはデコードを選択します: エンコードは、安全でない文字を %HH 形式でラップします。デコードを逆にすると、%HH はリテラル文字にエスケープされます。
  2. 入力テキストを追加する: エンコードまたはデコードする文字列を貼り付けます。エンコードの場合、これは通常、スペース、特殊文字、または非 ASCII コンテンツを含むリテラル値です。デコードの場合、これは %HH エスケープを含む URL または URL コンポーネントです。
  3. 変換する: このツールは、encodeURIComponent または decodeURIComponent を適用します。エンコードされた出力は URL に安全に埋め込むことができます。デコードされた出力は元のリテラル値です。
  4. コピーまたはダウンロード: 結果は必要なときにいつでも使用できます。エンコードされた値は URL に適合します。デコードされた値により、元のデータが明らかになります。

一般的な使用例

技術的な詳細

encodeURIComponent は、予約されていないセット [A-Za-z0-9-_.~] の外側のすべての文字をエンコードします。スペースは %20 になり、プラス記号は %2B になり、等号は %3D になります。 ASCII 以外の文字は、まず UTF-8 でエンコードされてから、各バイトが % でエスケープされます。

encodeURI はより寛容で、コンポーネントではなく完全な URL を対象としています。 /、?、&、=、#、およびその他のいくつかの文字は URL 構文の意味を持っているため、エスケープされません。 URL にユーザー データを埋め込む場合は、ほとんどの場合、encodeURIComponent が正しい選択です。

decodeURIComponent は %-escape を反転し、各エスケープが整形式であること、および結果のバイトが有効な UTF-8 を形成していることを検証します。不正な入力は、ガベージを生成するのではなく、エラーをスローします。

ベストプラクティス

よくある質問

URLエンコードが必要な文字は何ですか?
予約文字 (&、=、?、#、/、:、@) および安全でない文字 (スペース、<、>、{、}、|、^、~、[、]、`) はエンコードする必要があります。英数字と -_.~ は安全であり、エンコードは必要ありません。
encodeURI と encodeURIComponent の違いは何ですか?
encodeURI は完全な URL をエンコードしますが、予約文字 (://?#) は保持します。 encodeURIComponent は、-_.!~*'() を除くすべてをエンコードします。クエリ パラメーター値に使用します。このツールは両方のモードを提供します。
URL 内のスペースはどのようにエンコードされますか?
スペースは、%20 (標準のパーセント エンコーディング) または + (フォーム エンコーディング) としてエンコードできます。 %20 は URL パスとしては正しいですが、+ は HTML フォームのクエリ文字列で使用されます。このツールはデフォルトで %20 を使用します。
Unicode 文字をエンコードできますか?
はい。 Unicode 文字はまず UTF-8 バイトにエンコードされ、次に各バイトがパーセントでエンコードされます。たとえば、「日」は %E6%97%A5 (3 つの UTF-8 バイト、各パーセントエンコード) になります。
encodeURI または encodeURIComponent を使用する必要がありますか?
ほとんどの場合、URIComponent をエンコードします。 encodeURI は、完全な URL があり、その構造を保持したい場合にのみ使用してください。いずれにしてもコンポーネントから URL を構築するため、通常はまれです。
私のデータはサーバーにアップロードされていますか?
いいえ、URL のエンコードとデコードはすべてブラウザーで行われます。
Unicode 絵文字は扱えますか?
はい。絵文字はマルチバイトの UTF-8 シーケンスです。エンコーダーは%エスケープされたバイトのチェーンを生成し、デコーダーはそれを元の絵文字に正しく再構築します。
入力に、実際にはエンコードされていない %HH のように見える文字列が含まれている場合はどうなりますか?
エンコードにより各 % が %25 に変換され、残りの部分にエスケープが再適用されます。厳密な入力をデコードすると、不正なエスケープでエラーがスローされます。あいまいな文字列は正しくデコードされない可能性があります。