メインコンテンツにスキップ

文字列エスケープ/アンエスケープ

様々な形式の文字列の特殊文字をエスケープ・アンエスケープするツールです。データ処理、API開発、フロントエンド作業に必須です!

Examples:

サポート形式

📝 JSON

JSON形式用の特殊文字をエスケープします。

エスケープ:

  • 改行 → \n
  • タブ → \t
  • 引用符 → \"
  • バックスラッシュ → \\

使用例:

  • APIリクエスト/レスポンス
  • 設定ファイル
  • データ保存

🌐 HTML

XSS攻撃を防ぐためにHTML特殊文字をエスケープします。

エスケープ:

  • <&lt;
  • >&gt;
  • &&amp;
  • "&quot;
  • '&#39;

使用例:

  • ユーザー入力の表示
  • XSS防止
  • HTML生成

🔗 URL

URLで安全に送信するために特殊文字をエンコードします。

エスケープ:

  • スペース → %20
  • 日本語/特殊文字 → パーセントエンコーディング
  • 予約文字 → エンコード

使用例:

  • クエリパラメータ
  • URL生成
  • APIエンドポイント呼び出し

💻 JavaScript

JavaScript文字列用の特殊文字をエスケープします。

エスケープ:

  • 改行 → \n
  • 引用符 → \' または \"
  • バックスラッシュ → \\
  • Unicode → \uXXXX

使用例:

  • 動的スクリプト生成
  • テンプレートリテラル処理
  • コード生成

📄 XML

XML/HTML形式用の特殊文字をエスケープします。

エスケープ:

  • <&lt;
  • >&gt;
  • &&amp;
  • "&quot;
  • '&apos;

使用例:

  • XMLドキュメント生成
  • SOAP API
  • RSS/Atomフィード

実践例

ユーザー入力の表示

// XSS防止
const userInput = '<script>alert("XSS")</script>';
const escaped = escapeHTML(userInput);
// 結果: &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;
document.getElementById('output').textContent = escaped;

APIリクエスト

// JSONエスケープ
const data = {
message: 'こんにちは\n世界\t!'
};
const jsonString = JSON.stringify(data);
// 結果: {"message":"こんにちは\\n世界\\t!"}

URLクエリパラメータ

// URLエンコーディング
const searchQuery = '検索テスト';
const encodedQuery = encodeURIComponent(searchQuery);
// 結果: %E6%A4%9C%E7%B4%A2%E3%83%86%E3%82%B9%E3%83%88
const url = `https://api.example.com/search?q=${encodedQuery}`;

動的コード生成

// JavaScriptエスケープ
const userMessage = "It's a \"great\" day!";
const code = `console.log('${userMessage.replace(/'/g, "\\'")}');`;
// 結果: console.log('It\'s a \"great\" day!');

使用のヒント

1. 形式の選択

  • JSON: API通信やデータ保存用
  • HTML: Webページでのコンテンツ表示用
  • URL: クエリパラメータやパスセグメント用
  • JavaScript: 動的なコード生成用
  • XML: XMLドキュメントやRSSフィード用

2. エスケープが必要な場合

  • ✅ ユーザー入力の表示
  • ✅ APIデータ送信
  • ✅ データベースクエリ生成
  • ✅ URLパラメータ渡し
  • ✅ 動的コード生成

3. アンエスケープが必要な場合

  • ✅ 受信したAPIデータの処理
  • ✅ クエリパラメータの解析
  • ✅ 保存されたデータの復元
  • ✅ URLエンコードされたデータの処理

セキュリティ考慮事項

XSS防止

ユーザー入力を表示する際は必ずエスケープ:

// ❌ 危険
element.innerHTML = userInput;

// ✅ 安全
element.textContent = userInput;
// または
element.innerHTML = escapeHTML(userInput);

SQLインジェクション防止

エスケープの代わりにパラメータ化クエリを使用:

// ❌ 危険
const query = `SELECT * FROM users WHERE name = '${userInput}'`;

// ✅ 安全
const query = 'SELECT * FROM users WHERE name = ?';
db.execute(query, [userInput]);

注意事項

  • 形式によって異なるエスケープ方法が必要です
  • エスケープ ≠ エンコーディング(異なる概念)
  • サーバーサイドの検証も必要です
  • 二重エスケープ/アンエスケープに注意
  • 各言語の組み込み関数を使用してください

関連ツール