エスケープ/アンエスケープツール

形式: HTML

エスケープ処理の概要・基礎知識

エスケープとは、各データ形式やプログラミング言語で特別な意味を持つ文字(例:HTMLにおける < や >)を、表示用の安全な記法に変換する処理です。逆にエスケープ済みの文字列を元の文字に戻す処理をアンエスケープ(デコード)と呼びます。本ツールはHTML・JSON・XML・CSS・JavaScript・URLの6形式に対応しており、入力テキストをワンクリックで双方向変換できます。XSS(クロスサイトスクリプティング)対策、APIレスポンスのデバッグ、CSVやJSONの混入文字対応、URLパラメータの組み立てなど、Web開発・データ処理の現場で頻繁に発生する作業を高速にこなすためのツールです。

対応形式と変換ルール

形式エスケープ対象主な用途
HTML& < > " ' を実体参照にHTMLにユーザー入力を埋め込む際のXSS対策
JSON" \ 改行 タブ 制御文字を\記法にAPIレスポンス・設定ファイル・ログ出力
XML& < > " ' をXML名前参照にXMLデータ・RSS・SVG・XAMLの属性値
CSS特殊文字を\XXXX 形式(Unicodeエスケープ)にCSSセレクタの特殊クラス名・content属性
JavaScript' " \ 改行 制御文字を\記法にJSコード内の文字列リテラル組み立て
URL非ASCII・予約文字を%XX形式(パーセントエンコード)にURLパラメータ・クエリ文字列・リダイレクトURL

使い方の流れ

  1. 画面上部のタブで形式(HTML / JSON / XML / CSS / JavaScript / URL)を選びます。形式によって変換対象の文字や記法が異なるため、貼り付けるテキストの種類に合わせて選択してください。
  2. 「入力テキスト」欄に、エスケープしたい文字列、またはアンエスケープしたい文字列を貼り付けます。「サンプルを入力」ボタンを使うと、形式ごとの典型例が自動で挿入されます。
  3. 「エスケープ」ボタンで生テキストをその形式の安全な記法に変換、「アンエスケープ」ボタンでエスケープ済みの文字列を元に戻します。
  4. 「↕ 入力と結果を入れ替え」ボタンで、変換結果をそのまま入力欄に移して再変換でき、エスケープとアンエスケープを連続して試したいときに便利です。
  5. 変換結果は「結果をコピー」ボタンでクリップボードに転送できます。コードエディタやAPIテストツール、ブラウザのコンソールに即座に貼り付けられます。

こんな場面で使う

  • XSS対策の実装確認:ユーザー入力をHTMLに表示する前に必要なエスケープが施されているか、本ツールでサンプルを変換して挙動を確認できます。
  • JSON文字列の埋め込み:改行や引用符を含む長文をJSON値として安全に渡したいとき、エスケープした結果をそのままコピーして利用できます。
  • URLパラメータの生成:日本語のクエリ文字列や半角スペースを含むパラメータを正しい%エンコード形式に変換し、リダイレクトURLや検索リンクを構築できます。
  • ログ・エラーメッセージの解読:エスケープされた状態でログに残った文字列を読みやすい形に戻し、デバッグ作業を高速化します。
  • CSVやTSVへの混入対策:改行・タブ文字・制御文字を含むデータをJSやJSONリテラルとして扱う際、安全に取り回せます。

使う前に知っておきたい注意点

  • HTMLとXMLでは類似のエスケープ規則を使いますが、属性内とテキスト内では必要なエスケープが異なります。XML属性内では &quot;&apos; も必須なので、用途を確認してください。
  • JavaScriptのテンプレートリテラル(バッククォート)内では ${} も特殊文字となり、本ツールの一般的なJSエスケープではカバーしません。テンプレート文字列に貼る場合は手動で対応してください。
  • URLエンコードでは「クエリ文字列用」と「パス用」で扱いが微妙に異なります。スペースを+に変換するか%20に変換するかは仕様によって違うため、リクエスト先の仕様を確認してください。
  • 本ツールはブラウザ標準の encodeURIComponentJSON.stringify・実体参照テーブルを基に変換しています。サーバーサイドの言語固有の関数(PHPのhtmlspecialcharsなど)と完全に一致しない場合があります。
  • 機密情報(APIキー・トークン・個人情報)を貼り付けた場合でも本ツールは外部送信しませんが、コピー操作後にクリップボード履歴が残る可能性があります。共有PCでの利用時は履歴クリアを忘れずに行ってください。

用語の補足

  • 実体参照(Entity Reference):HTML/XMLで特殊文字を表す記法。&amp;のような名前参照と&#38;のような数値参照があります。
  • パーセントエンコード:URLで使われる%XX形式の符号化方式。RFC 3986で定義され、UTF-8バイト列を16進数で表現します。
  • 制御文字:改行(\n)・タブ(\t)・ベル(\a)など、表示されないが意味を持つ文字。JSON/JSではバックスラッシュ記法でエスケープされます。

よくある質問

対象文字(& < > " ')はほぼ同じですが、HTMLでは &apos; が古いブラウザでサポートされない可能性があるため &#039; を使う慣例があります。XMLでは &apos; が標準で使えます。本ツールはHTMLでは数値参照、XMLでは名前参照を採用しています。
application/x-www-form-urlencoded(HTMLフォーム送信形式)ではスペースを+に置換するのに対し、URLパス部分やencodeURIComponentでは%20になります。本ツールはencodeURIComponent準拠の%20を採用しており、より広い用途で安全に使える形式です。
JSON仕様上は / をエスケープしてもしなくても有効です。HTMLの<script>タグ内にJSONを埋め込むと </ がスクリプト終了タグと誤認される問題を避けるため、\/ にする実装もあります。一般的なAPIレスポンスではエスケープしないのが主流です。
「アンエスケープ」を実行してみて、見覚えのある文字列に戻ればエスケープ済み、変化がなければ生のままです。&amp;のような表記が見える状態は明らかにエスケープ済みなので、まずはアンエスケープから試すのが安全です。
クラス名やID名に半角スペース・ピリオド・コロンなどを含めるときや、contentプロパティで日本語や絵文字を埋め込むときに使います。たとえばクラス名 my.class をセレクタで指定するには .my\.class のようにエスケープが必要です。
&amp;amp; のように二重エスケープになっている文字列は、「アンエスケープ」を2回連続で実行すれば元に戻せます。「↕ 入力と結果を入れ替え」ボタンを使うと操作が楽です。デバッグの際は二重エスケープの兆候(amp%25の連続)を見逃さないようにしましょう。
いいえ、すべての処理はブラウザ上で完結します。コードや機密データを含む文字列を貼り付けても、外部に送信されることは一切ありません。