URL エンコード
Highlightは、コードされたパーセンテージバイトです。
無料オンライン URL エンコード・デコードツール。encodeURIComponent / encodeURI / RFC 3986 の4つのエンコードモードに対応。エンコードされた文字をリアルタイムでハイライト表示、バッチモードで複数行処理、Query Only でパラメータ値のみエンコード。ブラウザローカル処理でデータはアップロードされません。
関連おすすめ
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 形式の文字をリアルタイムで琥珀色にハイライト表示し、どの文字がエンコードされたかが一目でわかります。これによりエンコードルールを理解しやすくなります:英数字は通常安全な文字のためエンコードされず、中国語や特殊記号のみがエンコードされます。すべての計算はブラウザローカルで行われ、データはアップロードされません。
ユースケース
- APIパラメータデバッグ:encodeURIComponent と encodeURI の出力差を比較し、インターフェースの署名不一致の問題をトラブルシューティング
- ログデコード:ログ内のURLエンコードされた内容を一括デコードし、可読テキストに復元
- URL構築:Query Only モードでキー名を保持したまま値のみをエンコード、手動連結によるフォーマットエラーを回避
- フロントエンド開発:エンコードハイライトでどの文字がエスケープされるかを理解しやすく、ページ遷移やリダイレクトのデバッグに役立つ
- データ移行:旧システムからエクスポートされたURLエンコードデータを一括処理し、新しいフォーマットに変換
使い方
- エンコード・デコードしたいURLまたはテキストを入力または貼り付け
- エンコード方向(エンコード/デコード)とエンコードモード(Component / URI / full / RFC 3986)を選択
- 複数行データを処理する場合はバッチモードを有効に、パラメータ値のみをエンコードする場合は Query Only を有効に
- ハイライトされた結果を確認し、エンコード後の文字列をコピーしてAPIリクエストやURL構築に使用
特徴
- 4つのエンコードモード:encodeURIComponent / encodeURI / full / RFC 3986 をワンクリックで切り替え、各ルールの出力差をリアルタイムで比較
- エンコードハイライト:エスケープされた %XX 文字をリアルタイムでハイライト表示、琥珀色でマークしてエンコード結果を一目で確認
- バッチモード:複数行の一括エンコード・デコードに対応、各行を独立して処理。ログや一括データの処理に最適
- Query Only モード:URLパラメータの値部分(等号の後)のみをエンコードし、キー名や記号、パス構造はそのまま保持
- リアルタイムデバウンス:300msで自動エンコード・デコード、ボタンをクリックする必要なく、入力するだけで結果が表示
- 文字数カウント:入力文字数をリアルタイムで表示、APIパラメータの長さ制限の確認に便利
コード例
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%ACPython での 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%ACJava での 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());
}
}よくある質問
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 にエンコードする必要があります。
用語集
- パーセントエンコーディング(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つのエンコードモードによる文字エスケープ比較
| 文字 | 意味 | encodeURIComponent | encodeURI | RFC 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) |
Authoritative References
- 安全文字列比較
- 二進数変換
- シーザー暗号
- モールス信号
- 16進数変換
- 動画→Base64変換
- Base64 を動画に変換
- 画像をBase64に変換
- Base64を画像に変換
- テキスト→Base64変換
- Base64→テキスト変換
- ファイルハッシュ検証
- File to Base64
- Base64→ファイル変換
- 音声→Base64
- Base64を音声に変換
- AES暗号化・復号化
- DES暗号化/復号
- Base32 エンコーダー デコーダー
- Base58 エンコードとデコード
- Base64 エンコード
- Base64 デコード
- Base64比較
- Base64 分割
- Base64複数行マージ
- Base64フォーマット
- Base64形式チェック
- Base64一括エンコード
- Base64一括デコード
- Base64クリーナー
- Base64 パディング処理
- Base64長さ統計
- Base64→16進数変換
- Base64 DataURL 変換
- Base64-Hex双方向変換
- Base85エンコーダー/デコーダー
- HMAC生成と検証
- PBKDF2鍵導出
- MD5 ハッシュ値
- SHA-256 ハッシュ
- SHA1 ハッシュ
- SHA512ハッシュ
- JWT デコーダー
- HTMLエンティティエンコード/デコード
- Unicodeエスケープ
- URL エンコード
- URL Safe Base64変換
- MIME Base64
- Java難読化
- JS難読化
- PHP難読化
- Python難読化