HTMLエスケープ/アンエスケープ

&・<・>・"・' などの特殊文字をHTMLエンティティに変換(エスケープ)、またはエンティティを元の文字に戻します(アンエスケープ)。XSS対策やHTML埋め込み時に便利です。

主要な名前付きHTMLエンティティ一覧

文字 名前付きエンティティ 数値文字参照 説明
& &amp; &#38; アンパサンド("and"を表す記号)
< &lt; &#60; 小なり記号(HTMLタグの開始文字と同じ)
> &gt; &#62; 大なり記号(HTMLタグの終了文字と同じ)
" &quot; &#34; ダブルクォート(属性値の区切り文字)
' &apos; &#39; シングルクォート(属性値の区切り文字)
  &nbsp; &#160; ノーブレークスペース(改行しない空白)
© &copy; &#169; 著作権記号
® &reg; &#174; 登録商標記号
&trade; &#8482; 商標記号
&euro; &#8364; ユーロ記号
¥ &yen; &#165; 円記号
¢ &cent; &#162; セント記号

Tips

  • HTMLエスケープはXSS(クロスサイトスクリプティング)対策の基本です。ユーザー入力をHTMLに埋め込む前に必ずエスケープしてください。
  • & は必ず最初にエスケープする必要があります。他の文字を先に変換すると、生成された &amp;& まで二重にエスケープされてしまいます。
  • 属性値に文字列を埋め込む場合は"(ダブルクォート)だけでなく'(シングルクォート)もエスケープしておくと安全です。
  • このツールは10進数値参照&#38;)・16進数値参照&#x26;)・主要な名前付きエンティティ&amp;等)のアンエスケープに対応しています。
  • 多くのテンプレートエンジン(Blade・JSX・Vue等)は変数展開時に自動でHTMLエスケープしますが、{!! !!}やv-htmlのような「生HTML出力」構文を使う場合は自分でエスケープする必要があります。

よくある質問

&lt;&gt;&amp;の3文字はHTMLパーサーが構文の一部として解釈する特別な文字だからです。エスケープを怠るとブラウザがタグの開始・終了と誤認し、レイアウト崩壊やXSS(悪意あるスクリプトの埋め込み)につながる可能性があります。

URLエンコード(パーセントエンコーディング)はURLの中で特殊文字を安全に表現するための変換で、HTMLエスケープはHTML文書内でのタグ誤認を防ぐための変換です。用途が異なるため、フォームの値をURLパラメーターとHTML表示の両方に使う場合は両方の変換が必要になることがあります。

いいえ。すべての変換処理はブラウザ内のJavaScriptで完結しており、入力した文字列がtoolbase.ccのサーバーに送信されることはありません。

いいえ。このツールは&<>"'の5文字のみをエスケープします。絵文字や日本語などの非ASCII文字は現代のUTF-8環境ではそのまま安全に表示できるため変換不要です。
ツールくん

余談ですが ― SGMLから受け継いだ「文字参照」という仕組み

HTMLエンティティ(文字参照)の起源は、HTMLの元になったSGML(Standard Generalized Markup Language)にまで遡ります。1986年に標準化されたSGMLは、既にタグの区切り文字である<を本文中で使うための「文字参照」という仕組みを持っていました。HTMLはこの仕組みをほぼそのまま継承し、1990年代のHTML初期仕様の時点で&lt;&gt;&amp;といった基本的な名前付きエンティティが定義されていました。

名前付きエンティティは当初、印刷用の特殊記号(著作権記号&copy;・登録商標&reg;・各種ギリシャ文字など)を、当時普及していなかったUnicodeの代わりにASCII環境でも表示するための手段として重宝されました。HTML5仕様では最終的に2,000種類以上の名前付きエンティティが定義されており、チェックマークや音符記号のようなマイナーな記号まで網羅しています。

現代ではUTF-8エンコーディングの普及によって、文字化けを避けるための文字参照の必要性は大きく下がりました。しかし<・>・&という3文字だけは今でも別の理由でエスケープが必須です。これらはHTMLパーサーにとって構文上の特別な意味(タグの開始・終了・エンティティの開始)を持つため、エスケープを怠るとレイアウト崩壊やXSS脆弱性に直結します。