🔣 HTMLエンティティ変換

HTMLの特殊文字(& < > " ')をエンティティにエスケープ、または実体参照・数値参照を元の文字にデコードします。すべてブラウザ内で処理されます。

入力

変換結果

※ 入力はブラウザ内だけで処理され、サーバーには送信されません。エスケープはHTML表示用で、文脈により必要な処理は異なります。

代表的なHTMLエンティティ早見表

行の「名前付き」または「16進」をクリックすると、その参照をコピーできます。10進・16進の数値参照も併記しています。

文字 名前付き 10進 16進 説明

解説

HTMLでは、`<`、`>`、`&`、`"`、`'` といった文字がタグや属性の区切りとして特別な意味を持ちます。これらをそのまま本文や属性値に書くと、ブラウザがタグの一部として解釈してしまい、表示が崩れたり意図しない挙動を招いたりします。本ツールは、こうした特殊文字をHTMLエンティティ(実体参照)に変換(エスケープ)したり、逆にエンティティを元の文字へ戻したり(デコード)する作業を、ブラウザ内だけで完結して行えます。

エスケープでは、`&` を `&amp;amp;`、`<` を `&amp;lt;`、`>` を `&amp;gt;`、`"` を `&amp;quot;`、`'` を `&amp;#39;` に変換します。ポイントは `&` を最初に処理することです。先に他の文字を `&…;` の形へ変換してしまうと、その `&` を後からもう一度エスケープして `&amp;amp;lt;` のように二重エスケープしてしまうためです。本ツールは常に `&` を最優先で処理し、この事故を防いでいます。

たとえば `<a href="x">Tom & Jerry</a>` をエスケープすると `&amp;lt;a href=&amp;quot;x&amp;quot;&amp;gt;Tom &amp;amp; Jerry&amp;lt;/a&amp;gt;` になります。これをそのままHTMLに書くと、タグとして解釈されず、画面には元のソースコードがそのまま表示されます。ブログやドキュメントでHTMLのコード例を「見せる」ときに欠かせない変換です。

デコードは、名前付き実体(`&amp;amp;` `&amp;lt;` `&amp;gt;` `&amp;quot;` `&amp;apos;` `&amp;copy;` `&amp;nbsp;` など主要なもの)と、数値文字参照(10進の `&amp;#39;` と16進の `&amp;#x27;`)の両方に対応します。10進・16進のどちらで書かれていても同じ文字に戻るので、たとえば `&amp;#39;` と `&amp;#x27;` はどちらもアポストロフィ `'` に復元されます。

デコード処理は、あえてブラウザのDOM(要素の innerHTML に代入して読み戻す方法)を使わず、名前付き実体の対応表と数値参照の正規表現による自前の置換で行っています。innerHTML を経由すると、入力に含まれる `<script>` などが実行されたり副作用を起こしたりする恐れがあるためです。本ツールは文字列を機械的に置換するだけなので、任意のHTMLが実行される心配がありません。

エスケープはあくまで「HTMLとして表示する」ための処理であり、用途によって必要な対策は異なります。たとえば属性値の中でも `"` で囲むか `'` で囲むか、URL 文脈・JavaScript 文脈・CSS 文脈ではそれぞれ別のエスケープが必要です。本ツールはHTML本文・属性向けの基本的なエスケープを提供するものとして活用し、セキュリティが重要な箇所では文脈に応じた適切な処理を別途行ってください。

よくある質問

なぜ & を最初に変換するのですか?

先に < や " をエンティティ(&lt; や &quot;)へ変換すると、そこに含まれる & を後からもう一度エスケープして &amp;lt; のように二重エスケープしてしまうためです。本ツールは常に & を最優先で処理し、この事故を防いでいます。

&#39; と &#x27; はどちらもアポストロフィに戻りますか?

はい。&#39; は10進、&#x27; は16進の数値文字参照で、どちらもコードポイント39(U+0027)を指すため、デコードすると同じアポストロフィ ' に復元されます。

入力した内容はどこかに送信されますか?

いいえ。すべての変換はお使いのブラウザ内(JavaScript)だけで行われ、入力テキストがサーバーへ送られることはありません。オフラインでも動作します。

デコードはHTMLを実行してしまいませんか?

しません。DOMの innerHTML を使わず、名前付き実体の対応表と数値参照の正規表現による自前の置換だけで復元しているため、入力に <script> などが含まれていても実行されません。

どの名前付き実体に対応していますか?

amp・lt・gt・quot・apos・nbsp・copy・reg・trade などの主要な実体に加え、記号・矢印・ギリシャ文字など代表的なものに対応しています。対応表にない実体はそのまま残します。数値参照(10進・16進)はすべて復元できます。

「非ASCII文字も数値参照にする」オプションは何のためですか?

日本語や絵文字などASCII以外の文字を &#xNN; 形式の16進数値参照に変換します。文字コードの扱いが不安定な環境へ貼り付ける場合などに、文字化けを避ける目的で使えます。通常のHTML表示ではオフのままで問題ありません。

エスケープすればXSS対策は万全ですか?

文脈によります。HTML本文や属性値ではこのエスケープが有効ですが、URL・JavaScript・CSSの各文脈ではそれぞれ別のエスケープが必要です。セキュリティが重要な箇所では、出力先の文脈に応じた適切な処理を別途行ってください。