HTML エンティティ エンコーダー / デコーダー

HTMLエンティティのエンコード・デコード。名前付き・10進数・16進数エンティティ対応。無料、ブラウザ内で処理。

  • ブラウザ内で処理
  • データはブラウザ外に出ません
  • 無料 · 登録不要
「エンコード」か「デコード」を選びます。入力を止めて0.3秒後、選択中の方向で変換します。方向を変えると現在の入力をすぐに変換し、待機中の変換を取り消します。「クリア」でも方向は保持します。
エンコードは &、<、>、二重引用符、単一引用符を置き換えます。ASCII 範囲外の各コードポイントは、絵文字を含め1つの10進数参照になります。空白、タブ、改行は保持します。
デコードはブラウザーの textarea パーサーで名前付き・10進数・16進数参照を読み取ります。タグは文字列のままです。一部の旧名称はセミコロンなしでも読めます。英語のステータスはセミコロンで終わる参照のみ数えます。
表示中の出力全体をコピーします。失敗した場合は出力を選択して手動でコピーしてください。

エンコード結果は HTML 本文と引用符付き属性に使います。JavaScript、イベントハンドラー、CSS、URL には各文脈のエスケープが必要です。

クイックリファレンス — よく使う HTML エンティティ
CharacterNameEntityDecimalHex
&Ampersand&amp;&#38;&#x26;
<Less-than&lt;&#60;&#x3C;
>Greater-than&gt;&#62;&#x3E;
"Double quote&quot;&#34;&#x22;
'Apostrophe&apos;&#39;&#x27;
Non-breaking space&nbsp;&#160;&#xA0;
©Copyright&copy;&#169;&#xA9;
®Registered&reg;&#174;&#xAE;
™Trademark&trade;&#8482;&#x2122;
—Em dash&mdash;&#8212;&#x2014;
–En dash&ndash;&#8211;&#x2013;
«Left guillemet&laquo;&#171;&#xAB;
»Right guillemet&raquo;&#187;&#xBB;
表を開くと、よく使う名前付き・10進数・16進数参照を確認できます。表は参照用で、エンコードは ASCII 範囲外の文字を10進数参照にします。
詳しいガイドを読む HTML特殊文字一覧:記号の文字参照コード表(名前・10進・16進)
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。

変換の例

以下の出力は、このツールのエンコード処理と、ブラウザーと同じ HTML の解析規則で求めたものです。

郵便番号と注記記号

〒100-0001 ※要予約 を エンコード すると、次のようになります。

&#12306;100-0001 &#8251;&#35201;&#20104;&#32004;

〒 と ※ には名前付き参照がないため、10進数のコードポイントになります。ハイフンと数字は ASCII なのでそのまま残り、漢字も1文字ずつ数値参照になります。

価格表示をデコードする

古い CMS や商品データの書き出しでは、円記号が名前付き参照で保存されていることがあります。&yen;1,980(税込) を デコード すると次の結果になります。

¥1,980(税込)

セミコロンを付けない &yen1,980 も ¥1,980 に戻ります。ただし英語のステータスはセミコロンで終わる参照しか数えないため、この場合は Decoded — 0 entities converted. と表示されます。

かぎかっこを含む属性値

<a title="「新着」記事"> をエンコードすると、出力は次のとおりで、ステータスは Encoded — 10 characters converted. です。

&lt;a title=&quot;&#12300;&#26032;&#30528;&#12301;&#35352;&#20107;&quot;&gt;

二重引用符は &quot; になるので、この結果は二重引用符で囲んだ属性値の中に入れても途中で切れません。「」は ASCII ではないため数値参照になりますが、HTML の構文上はエスケープしなくても問題のない文字です。

記号の名前を確かめる

&rarr; &hellip; &times; をデコードすると → … × になります。名前がわからない記号は、文字そのものをエンコードして数値で確かめるのが確実です。

名前付き参照がない記号

HTML の名前付き文字参照は HTML 標準の一覧 にある名前だけが使えます。一覧はラテン文字や数学記号が中心で、日本語の文章によく出てくる記号の多くは入っていません。

文字名前付き参照10進数
〒なし&#12306;
※なし&#8251;
、なし&#12289;
。なし&#12290;
「なし&#12300;
¥&yen;&#165;
…&hellip;&#8230;

UTF-8 で保存したページなら、これらの記号は文字のまま書けば十分です。W3C の解説「Using character escapes in markup and CSS」も、ページには UTF-8 を使い、普通の文字はエスケープせずに書くよう勧めています。必ずエスケープするのは <、>、& と、属性値の中で外側と同じ種類の引用符です。数値参照が役に立つのは、ページの文字コードで表せない文字を入れるときや、見えない文字をソースの上で区別したいときです。

デコードの仕組み

デコードは入力をブラウザー自身の HTML パーサーに渡し(textarea の innerHTML に入れて文字列として読み戻す)、文字参照だけを置き換えます。入力にタグがあっても要素は作られず、スクリプトも実行されません。

  • 名前付き参照、10進数参照、16進数参照のどれでも読み取ります。
  • &#128; から &#159; は HTML 標準の規定どおり Windows-1252 として解釈され、&#128; は € になります。&#0; やサロゲートの番号は U+FFFD になります。
  • 1回のデコードで1段階だけ戻します。&amp;lt; は &lt; になり、< にはなりません。二重にエンコードされた文字列は、出力をもう一度「入力」に入れてデコードしてください。

制限

  • エンコード結果は HTML 本文と引用符付きの属性値のためのものです。<script> の中、インラインのイベントハンドラー、CSS、URL では別のエスケープ規則が必要です。JavaScript や JSON の文字列には文字列エスケープ / アンエスケープ、クエリーパラメーターには URL エンコード / デコードを使ってください。
  • エンコードは &copy; のような名前付き参照を出力しません。ASCII 以外の文字はすべて10進数参照になり、絵文字も1文字につき1つの参照になります。
  • 変換結果のステータスは、どの言語のページでも英語で表示されます。

よく使うHTMLエンティティ

  • &lt; → <(小なり記号)
  • &gt; → >(大なり記号)
  • &amp; → &(アンパサンド)
  • &quot; → "(ダブルクォート)
  • &apos; → '(シングルクォート)
  • &copy; → ©(著作権記号)

FAQ

HTMLエンティティとは何ですか?

HTMLエンティティ(文字参照)は、1つの文字を表すコードです。たとえば < を &lt; と書くと、ブラウザーはタグの始まりとして読みません。© は &copy; または &#169; と書けます。

いつエンコードが必要ですか?XSS対策になりますか?

ユーザーが入力した文字列やコードの例を、HTML 本文や引用符で囲んだ属性値に入れるときに使います。そこで <、>、&、引用符をエスケープすると、表示崩れや HTML インジェクション(XSS)を防げます。ただし結果は HTML 用です。JavaScript の文字列、イベントハンドラー、CSS、URL にはそれぞれの文脈に合ったエスケープが必要です。

名前付き・10進数・16進数の参照は何が違いますか?

名前付き参照は HTML の名前一覧にある名前(&amp;)、10進数参照は Unicode コードポイントの10進数(&#38;)、16進数参照は16進数(&#x26;)を使います。どれも同じ文字を表し、デコードは3種類とも読み取ります。エンコードが名前を使うのは &、<、>、二重引用符だけで、それ以外は10進数参照を出力します。

データはサーバーに送信されますか?

いいえ。変換はブラウザーのタブの中で行い、入力した文字列をサーバーへ送ったりブラウザーのストレージに保存したりしません。ページのアクセス解析が記録するのは利用イベント(ツール名と切り替えた方向)だけで、文字列は含みません。

〒 や ※ に名前付き参照はありますか?

ありません。HTML 標準の名前付き文字参照の一覧に 〒(U+3012)と ※(U+203B)は含まれず、エンコードするとそれぞれ &#12306; と &#8251; になります。円記号 ¥(U+00A5)には &yen; がありますが、このツールのエンコードは &#165; を出力します。