本文へスキップ

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

URLで安全に使用できるように特殊文字をエンコードするか、エンコードされたURLを元にデコードするツールです。

📝 入力テキスト

✨ 結果

💡 例

元:
https://example.com/search?query=헬로 월드&lang=ko
エンコード:
https%3A%2F%2Fexample.com%2Fsearch%3Fquery%3D%ED%97%AC%EB%A1%9C%20%EC%9B%94%EB%93%9C%26lang%3Dko

URLエンコーディングは、特殊文字をパーセントエンコード形式に変換し、URLで安全に送信できるようにします。エンコードで特殊文字を変換し、デコードで元のテキストを復元します。

主な機能

1. URLエンコード (Encode)

特殊文字、日本語、空白などをパーセントエンコード形式(%XX)に変換します。

例:

元: https://example.com/search?query=こんにちは 世界&lang=ja
エンコード: https%3A%2F%2Fexample.com%2Fsearch%3Fquery%3D%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%E4%B8%96%E7%95%8C%26lang%3Dja

2. URLデコード (Decode)

パーセントエンコードされたURLを読めるテキストに変換します。

例:

エンコード: %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%20%E4%B8%96%E7%95%8C
デコード: こんにちは 世界

3. 便利な機能

  • テキスト交換: 入力と結果を素早く入れ替えることができます
  • コピー: 結果をクリップボードにコピーします
  • 初期化: すべての入力を一度に消去します

URLエンコードが必要な理由

安全なURL送信

URLには特別な意味を持つ文字があります:

  • / : パス区切り文字
  • ? : クエリ開始
  • & : パラメータ区切り文字
  • = : キー値区切り文字
  • # : フラグメント

これらの文字をデータとして送信するにはエンコードが必要です。

日本語および多言語

元: https://example.com/検索?keyword=こんにちは
エンコード: https://example.com/%E6%A4%9C%E7%B4%A2?keyword=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

日本語や特殊文字はURLで直接使用できないため、エンコードが必須です。

使用例

Web開発

// JavaScriptでURL生成
const searchQuery = "こんにちは";
const encodedQuery = encodeURIComponent(searchQuery);
const url = `https://api.example.com/search?q=${encodedQuery}`;
// 結果: https://api.example.com/search?q=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

API呼び出し

# 元のURL (動作しない)
GET https://api.example.com/users?name=山田太郎&age=30

# エンコードされたURL (正常動作)
GET https://api.example.com/users?name=%E5%B1%B1%E7%94%B0%E5%A4%AA%E9%83%8E&age=30

クエリパラメータ

# 特殊文字を含む検索語
元: 検索=C++ & Java
エンコード: 検索=C%2B%2B%20%26%20Java

エンコードされる文字

常にエンコードされる文字

  • 空白: %20
  • 日本語/漢字: 各文字が複数バイトにエンコード
  • 特殊文字: !, @, #, $, %, ^, &, *, (, ), =, +, [, ], {, } など

!   → %21
@ → %40
# → %23
$ → %24
% → %25
& → %26
= → %3D
+ → %2B
空白 → %20

活用事例

🌐 Web開発

  • 検索機能: ユーザー入力をURLクエリに変換
  • API呼び出し: GETリクエストパラメータのエンコード
  • ファイル名: 特殊文字を含むファイル名の処理

📧 メールリンク

<!-- 件名と本文のあるmailtoリンク -->
<a href="mailto:test@example.com?subject=こんにちは&body=お問い合わせです">
<!-- エンコード後 -->
<a href="mailto:test@example.com?subject=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF&body=%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E3%81%A7%E3%81%99">

🔗 ソーシャルメディア共有

// Facebook共有URL
https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fexample.com&quote=%E3%81%84%E3%81%84%E8%A8%98%E4%BA%8B

// Twitter共有URL
https://twitter.com/intent/tweet?text=%E7%B4%A0%E6%99%B4%E3%82%89%E3%81%97%E3%81%84%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&url=https%3A%2F%2Fexample.com

📊 データ分析

  • ログ分析: Webサーバーログのエンコードされた URL 解釈
  • トラッキングURL: Google Analyticsなどのパラメータ解釈

ヒント

いつエンコードしますか?

  • クエリパラメータ値: ?search=エンコード必要
  • 日本語/特殊文字: name=山田太郎
  • 空白: query=hello world
  • ドメイン: https:// (すでに安全な文字)
  • パス区切り文字: /api/users (意図的な区切り文字)

完全なURL vs パラメータのみ

// ❌ 間違った方法: 完全なURLエンコード
const wrong = encodeURIComponent("https://example.com/search?q=こんにちは");
// 結果: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3D%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

// ✅ 正しい方法: パラメータ値のみエンコード
const query = encodeURIComponent("こんにちは");
const correct = `https://example.com/search?q=${query}`;
// 結果: https://example.com/search?q=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

二重エンコードに注意

元: こんにちは
1次エンコード: %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF
2次エンコード: %25E3%2581%2593%25E3%2582%2593%25E3%2581%25AB%25E3%2581%25A1%25E3%2581%25AF

// 同じテキストを2回エンコードしないでください!

プログラミング言語別使用法

JavaScript

// エンコード
const encoded = encodeURIComponent("こんにちは");
// デコード
const decoded = decodeURIComponent(encoded);

Python

from urllib.parse import quote, unquote

# エンコード
encoded = quote("こんにちは")
# デコード
decoded = unquote(encoded)

Java

import java.net.URLEncoder;
import java.net.URLDecoder;

// エンコード
String encoded = URLEncoder.encode("こんにちは", "UTF-8");
// デコード
String decoded = URLDecoder.decode(encoded, "UTF-8");

PHP

// エンコード
$encoded = urlencode("こんにちは");
// デコード
$decoded = urldecode($encoded);

関連ツール

よくある質問

Q: URLのどの部分をエンコードすべきですか? A: クエリパラメータのの部分のみをエンコードしてください。プロトコル(https://)、ドメイン、パス区切り文字(/)はエンコードしません。

Q: 空白が%20+の2つで表示されますが、違いは何ですか? A: %20はURL全体で使用可能で、+はクエリパラメータでのみ空白を表します。一般的に%20を使用する方が安全です。

Q: デコードエラーが発生します。 A: 入力されたテキストが正しいURLエンコード形式ではないか、すでにデコードされたテキストである可能性があります。元のエンコードされたURLを再度確認してください。

Q: すでにエンコードされたURLを再度エンコードするとどうなりますか? A: 二重エンコードが発生し、望ましくない結果になります。例えば%20%2520に変換されます。1回のみエンコードしてください。