ツール
ガイド

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

エンコード

HTML エンティティのエンコードとデコード——名前・10 進・16 進。

100% クライアントサイド バックエンドなし
入力
出力
このページの内容

HTML エンティティエンコードとは?#

HTML は一部の文字に特別な意味を与えます——<> はタグを区切り、& はエンティティや文字参照を開始し、"' は属性値をクォートします。これらの文字の 1 つをページ上にリテラルテキストとして表示したいとき——コードスニペットのソースをユーザーに見せるとき、検索入力をフィールドにエコーバックするとき、Tom & Jerry という文字列を表示するとき——エンティティと呼ばれる代替物に置き換えなければなりません。この置換が HTML エンティティエンコードです。

同じエスケープを書く方法は 3 つあり、このツールはオプションセレクターで 3 つすべてを提供します:

  • 名前&&amp; に、<&lt; に、といった具合です。人間が読みやすく、人が普通手書きする唯一の形式です。このモードでは、構造的に危険な 5 文字だけがエスケープされ、残りはすべてそのまま通過します。
  • 10 進 — 非 ASCII または制御文字のすべてが &#N; になります。N は Unicode コードポイントの 10 進表現です(例えば ©&#169;)。標準外のすべてのバイトを可視化し ASCII セーフにしたいときに適しています。
  • 16 進 — 同じ考えを 16 進コードポイントで: ©&#xa9; になります。コンパクトで、Unicode 表で見るコードポイント表記と自然に一致します。

デコードは、厳選された HTML5 サブセットの名前付きエンティティに加え、&#NN;(10 進)と &#xHH;(16 進)を認識します。認識できない名前付きエンティティは、推測するのではなく、そのまま残されます——間違った文字を黙って出力するより安全です。

使い方#

  1. 左上の切り替えでエンコードまたはデコードを選びます。
  2. オプションで、名前10 進16 進のいずれかを選びます。
  3. 左側の入力ペインに貼り付けます。
  4. 右側の出力ペインからエスケープ(またはエスケープ解除)された結果を読み、コピーをクリックします。
  5. サンプルはデモ文字列を読み込みます。クリアはペインをリセットします。

主な特徴#

  • 1 つのセレクターで 3 つのエスケープスタイル。 再貼り付けなしで名前・10 進・16 進を切り替えられるため、出力の比較が簡単です。
  • astral 文字に正確。 反復は UTF-16 コードユニットではなく Unicode コードポイント単位で行われるため、🌍 のような絵文字は壊れたサロゲートの組ではなく、1 文字(&#x1f30d;)として扱われます。
  • 厳選された安全なデコーダ。 名前付きエンティティのマップは、よくある HTML5 参照(コピーライト、商標、アクセント付き字母、数学記号、クォートとダッシュ)をカバーします。未知の名前は壊されるのではなく、そのまま通過します。
  • DOM を使わない。 エンコードとデコードは純粋な文字列操作です——隠し <div> の注入はないため、ロジックは完全にテスト可能で、ツール自身があなたの入力をマークアップとして解釈するリスクもありません。

実例#

マークアップとリテラルの記号を混ぜたフラグメントを取ります:

<a href="x">Tom & Jerry</a> © 2026

名前モードでは、危険な 5 文字だけがエスケープされ、© はそのまま残ります(構造的に危険ではないため):

&lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&lt;/a&gt; © 2026

10 進に切り替えると、© もコードポイントになり、主要な文字は数値形式に切り替わります:

&#60;a href=&#34;x&#34;&#62;Tom &#38; Jerry&#60;/a&#62; &#169; 2026

16 進モードでは同じ文字が 16 進コードポイントとして現れます:

&#x3c;a href=&#x22;x&#x22;&#x3e;Tom &#x26; Jerry&#x3c;/a&#x3e; &#xa9; 2026

デコードはこれらすべてを逆転させます——デコードを選んで 3 つの出力のいずれかを貼り戻せば、© を含む元のフラグメントが得られます。

よくある質問#

文字列を HTML の中に置くために安全にするには、どのモードを使うべきですか?#

危険な 5 文字については、名前がほぼ常に正しい既定です——読みやすく、すべてのブラウザに理解され、出力は diff に適したまま保たれます。通常のエスケープではなく、非 ASCII 文字のすべてを ASCII セーフにする特別な必要性がある場合(例えば、上位バイトを拒否するトランスポートに向けてコンテンツを用意するなど)にだけ、10 進16 進に手を伸ばしてください。

&copy; をデコードしましたが、&mytag; のような変な名前がそのまま出てきました。なぜですか?#

デコーダは実際に知っているエンティティだけを解決します——よくある名前の厳選された HTML5 サブセットです。&mytag; は実際の HTML エンティティではないため、ツールは推測したり削ったりするのではなく、そのまま残します。本当に DTD 定義のすべてのエンティティを解決する必要があるなら、それは文字列コンバーターの範囲を超えて、本物の HTML 解析の領域です。

HTML エスケープだけで、JavaScript の文字列や URL の中でユーザー入力を安全にできますか?#

いいえ。それぞれのコンテキストには独自のルールがあります。HTML エスケープはマークアップの注入を防ぎますが、'); alert(1); // のような文字列は HTML では無害で、<script> の中では危険です。同じ入力は、リンクに入れる前に URL エンコードも必要です。一度ではなく、到着先のコンテキストに合わせてエスケープしてください。

16 進出力が小文字(&#xA9; ではなく &#xa9;)なのはなぜですか?#

小文字の 16 進が慣習的でより整った形式であり、どのブラウザでも同じように解析されます。スタイルガイドのために大文字が必要なら、10 進モード(&#169;)でその問題を完全に回避するか、出力を独自のケース変換に通してください。