logo
GeekFormat

URL エンコード

コーディングコード
URL入力
0 chars

無料オンライン URL エンコード・デコードツール。encodeURIComponent / encodeURI / RFC 3986 の4つのエンコードモードに対応。エンコードされた文字をリアルタイムでハイライト表示、バッチモードで複数行処理、Query Only でパラメータ値のみエンコード。ブラウザローカル処理でデータはアップロードされません。

関連おすすめ

ユースケース

  • APIパラメータデバッグ:encodeURIComponent と encodeURI の出力差を比較し、インターフェースの署名不一致の問題をトラブルシューティング
  • ログデコード:ログ内のURLエンコードされた内容を一括デコードし、可読テキストに復元
  • URL構築:Query Only モードでキー名を保持したまま値のみをエンコード、手動連結によるフォーマットエラーを回避
  • フロントエンド開発:エンコードハイライトでどの文字がエスケープされるかを理解しやすく、ページ遷移やリダイレクトのデバッグに役立つ
  • データ移行:旧システムからエクスポートされたURLエンコードデータを一括処理し、新しいフォーマットに変換

特徴

  • 4つのエンコードモード:encodeURIComponent / encodeURI / full / RFC 3986 をワンクリックで切り替え、各ルールの出力差をリアルタイムで比較
  • エンコードハイライト:エスケープされた %XX 文字をリアルタイムでハイライト表示、琥珀色でマークしてエンコード結果を一目で確認
  • バッチモード:複数行の一括エンコード・デコードに対応、各行を独立して処理。ログや一括データの処理に最適
  • Query Only モード:URLパラメータの値部分(等号の後)のみをエンコードし、キー名や記号、パス構造はそのまま保持
  • リアルタイムデバウンス:300msで自動エンコード・デコード、ボタンをクリックする必要なく、入力するだけで結果が表示
  • 文字数カウント:入力文字数をリアルタイムで表示、APIパラメータの長さ制限の確認に便利

使い方

  1. エンコード・デコードしたいURLまたはテキストを入力または貼り付け
  2. エンコード方向(エンコード/デコード)とエンコードモード(Component / URI / full / RFC 3986)を選択
  3. 複数行データを処理する場合はバッチモードを有効に、パラメータ値のみをエンコードする場合は Query Only を有効に
  4. ハイライトされた結果を確認し、エンコード後の文字列をコピーしてAPIリクエストやURL構築に使用

よくある質問

encodeURIComponent と encodeURI の違いは何ですか?

encodeURIComponent は &、=、? などを含むすべての非安全文字をエンコードするため、個々のパラメータ値のエンコードに適しています。encodeURI は URL の構造文字(:、/、?、# など)を保持するため、URL 全体のエンコードに適しています。使用場面:パラメータ値には Component、URL 全体には URI を使用してください。

RFC 3986 と標準エンコードの違いは何ですか?

RFC 3986 は URL 標準の改訂版で、チルダ ~ をエンコード不要な安全な文字として扱います。古い標準では %7E にエンコードされます。RFC 3986 を使用すると、一部のサーバー側での解析の違いを回避でき、互換性が向上します。

Query Only モードはどのような場面で使用しますか?

URL クエリ文字列 ?name=張三&city=北京 のような場合に、キー名や記号には影響を与えずパラメータ値のみをエンコードしたいときに使用します。この場合、name と city はそのままで、値は %E5%BC%A0%E4%B8%89 と %E5%8C%97%E4%BA%AC にエンコードされます。

スペースのエンコードは + と %20 のどちらを使うべきですか?

application/x-www-form-urlencoded 形式(HTMLフォーム送信)では、スペースは + にエンコードされます。ただし、URL パスと encodeURIComponent では、スペースは常に %20 にエンコードされます。このツールではデフォルトで %20 形式を使用しています。

同じ中国語の文字でもツールによってエンコード結果が異なるのはなぜですか?

これは文字エンコード方式に依存します。このツールでは UTF-8 エンコード(Web標準)を使用しており、中国語の「中」は %E4%B8%AD にエンコードされます。他のツールが GBK エンコードを使用している場合、結果は %D6%D0 になります。Web URL では常に UTF-8 を使用することを推奨します。

エンコードハイライトは何の役に立ちますか?

%XX 形式にエンコードされた文字(例:スペース→%20)をハイライト表示し、エンコードルールの理解や問題のトラブルシューティングに役立ちます。英数字は安全な文字のためエンコードされず、中国語や特殊記号のみがエンコードされます。

% 自体もエンコードする必要がありますか?

はい。% は URL エンコードのエスケープ開始文字です。パラメータ値にリテラル % が含まれる場合は、%25 にエンコードする必要があります。そうしないと、エンコードされたバイトとして誤って解析されてしまいます。例えば 100% は 100%25 にエンコードする必要があります。

URL エンコードとは何ですか?

URL エンコード(パーセントエンコーディング)は、URL 内の非安全文字を %XX 形式に変換するプロセスです。URL には ASCII 文字のごく一部(英字、数字、-_.~)しか含めることができず、その他のすべての文字(中国語、スペース、特殊記号を含む)は URL 内で転送する前にエンコードする必要があります。例えばスペースは %20、中国語の「中」は %E4%B8%AD にエンコードされます。

**encodeURIComponent vs encodeURI**:これらは最もよく使用される2つのエンコード関数です。encodeURIComponent は &、=、? などのパラメータ区切り文字を含めて最も徹底的にエンコードするため、個々のパラメータ値のエンコードに適しています。encodeURI は URL の構造(プロトコル://、パス、/、?、#)を保持するため、URL 全体のエンコードに適しています。使い方を誤るとパラメータの解析エラーが発生します。

**RFC 3986 vs 古い標準**:RFC 3986 はチルダ ~ を安全な文字としてエンコードしませんが、初期の標準では %7E にエンコードされます。RFC 3986 を使用すると不要なエスケープが減り、URL の可読性が向上するとともに、一部のサーバーでの %7E の解析に関する問題も回避できます。

**Query Only モード**:URL 内のクエリパラメータの値のみをエンコードし、キー名や等号、& 記号には影響を与えたくない場合に使用します。例えば ?name=張三 は ?name=%E5%BC%A0%E4%B8%89 にエンコードされ、キー名は読みやすいまま値のみがエンコードされます。

**エンコードハイライト**:%XX 形式の文字をリアルタイムで琥珀色にハイライト表示し、どの文字がエンコードされたかが一目でわかります。これによりエンコードルールを理解しやすくなります:英数字は通常安全な文字のためエンコードされず、中国語や特殊記号のみがエンコードされます。すべての計算はブラウザローカルで行われ、データはアップロードされません。

术语表

パーセントエンコーディング(Percent-encoding)
URL エンコードの正式名称。% に続く2桁の16進数で文字を表現するエンコード方式。例えばスペースは %20、中国語の「中」は %E4%B8%AD にエンコードされます。Wikipedia - パーセントエンコーディング
encodeURIComponent
JavaScript 組み込み関数。A-Z a-z 0-9 - _ . ! ~ * ' ( ) 以外のすべての文字をエンコードします。URL クエリパラメータの個々の値をエンコードする際に最もよく使用されます。
encodeURI
JavaScript 組み込み関数。URL の構造文字(: / ? # [ ] @ ! $ & ' ( ) * + , ; =)を保持し、本当にエンコードが必要な文字のみをエンコードします。URL 全体をエンコードする際に使用します。
RFC 3986
URI 汎用構文に関する最新の IETF 標準(2005年)。URL エンコードのルールを定義しており、チルダ ~ を非予約文字(エンコード不要)として分類しています。古い RFC 2396 および RFC 1738 に代わるものです。RFC 3986
予約文字(Reserved Characters)
URL 内で特殊な意味を持つ文字(: / ? # [ ] @ ! $ & ' ( ) * + , ; = など)。これらの文字はデータとして使用する場合はエンコードする必要がありますが、構造的な位置ではエンコードすべきではありません。
非予約文字(Unreserved Characters)
URL 内のどの位置でもエンコードせずに使用できる安全な文字。A-Z、a-z、0-9、-、_、.、~(RFC 3986による)が含まれます。
クエリ文字列(Query String)
URL の ? 以降の部分。key=value のペアで構成され、& で区切られます。例えば ?name=張三&age=20 では、name=張三 と age=20 が2つのパラメータです。
URLSearchParams
モダンブラウザが提供する API。URL クエリ文字列を簡単に構築・解析でき、エンコードとデコードを自動的に処理します。文字列を手動で連結するよりも安全で信頼性があります。
application/x-www-form-urlencoded
HTML フォームのデフォルトの送信形式。スペースが %20 ではなく + にエンコードされる点が encodeURIComponent と異なります。サーバーサイドのフレームワークは通常どちらの形式も自動的に処理します。
UTF-8 エンコード
Web 標準の文字エンコーディング。URL エンコードでは、非 ASCII 文字(中国語、絵文字など)をまず UTF-8 のバイトシーケンスに変換し、各バイトを %XX 形式にエンコードします。

4つのエンコードモードによる文字エスケープ比較

文字意味encodeURIComponentencodeURIRFC 3986
スペース空白%20%20%20
!感嘆符%21!%21
#フラグメント識別子%23#%23
$ドル記号%24$%24
&パラメータ区切り%26&%26
'シングルクォート%27'%27
(左括弧%28(%28
)右括弧%29)%29
*アスタリスク%2A*%2A
+プラス記号%2B+%2B
,カンマ%2C,%2C
/パス区切り%2F/%2F
:コロン%3A:%3A
;セミコロン%3B;%3B
=イコール記号%3D=%3D
?クエリ文字列%3F?%3F
@アットマーク%40@%40
~チルダ%7E%7E~

よく使われるURL予約文字クイックリファレンス

エンコード後元の文字URL内での用途
%20(スペース)空白
%21!サブ区切り文字
%23#フラグメント識別子(ハッシュ)
%25%エスケープ文字自体
%26&クエリパラメータ区切り
%2B+プラス記号/フォームの空白
%2F/パス区切り
%3A:スキーム区切り
%3D=キーと値の区切り
%3F?クエリ文字列の開始
%40@認証/メール区切り
%5B[配列パラメータ(RFC 3986)

Code Examples

JavaScript での URL エンコード/デコード

// encodeURIComponent:個々のパラメータ値をエンコード(最も一般的)
const param = encodeURIComponent('張三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI:URL全体をエンコード(:/?#&= などの構造文字を保持)
const url = encodeURI('https://example.com/search?q=こんにちは 世界');
console.log(url);

// デコード
const decoded = decodeURIComponent(param);
console.log(decoded); // 張三&李四

// RFC 3986 互換(~ はエンコードしない)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// URLSearchParams API(モダンな方法、自動でエンコード処理)
const params = new URLSearchParams({ name: '張三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Python での URL エンコード/デコード

from urllib.parse import quote, unquote, urlencode, quote_plus

# quote: encodeURIComponent に類似
encoded = quote('張三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# RFC 3986 モード(~ はエンコードしない、デフォルト)
print(quote('hello~world'))  # hello~world

# quote_plus: 空白を + としてエンコード(フォーム形式)
print(quote_plus('hello world'))  # hello+world

# デコード
print(unquote(encoded))  # 張三&李四

# urlencode: クエリ文字列を構築
params = urlencode({'name': '張三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Java での URL エンコード/デコード

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // URLエンコード(URLEncoder はフォーム形式、空白は+になる)
        String encoded = URLEncoder.encode("張三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // デコード
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 張三&李四

        // URL全体を構築(URIクラスが自動でエンコード処理)
        URI uri = new URI("https", "example.com", "/search", "q=こんにちは世界", null);
        System.out.println(uri.toASCIIString());
    }
}

Authoritative References