HTML エンティティ エンコード / デコード
エンコードHTML エンティティのエンコードとデコード——名前・10 進・16 進。
このページの内容
HTML エンティティエンコードとは?#
HTML は一部の文字に特別な意味を与えます——< と > はタグを区切り、& はエンティティや文字参照を開始し、" と ' は属性値をクォートします。これらの文字の 1 つをページ上にリテラルテキストとして表示したいとき——コードスニペットのソースをユーザーに見せるとき、検索入力をフィールドにエコーバックするとき、Tom & Jerry という文字列を表示するとき——エンティティと呼ばれる代替物に置き換えなければなりません。この置換が HTML エンティティエンコードです。
同じエスケープを書く方法は 3 つあり、このツールはオプションセレクターで 3 つすべてを提供します:
- 名前 —
&は&に、<は<に、といった具合です。人間が読みやすく、人が普通手書きする唯一の形式です。このモードでは、構造的に危険な 5 文字だけがエスケープされ、残りはすべてそのまま通過します。 - 10 進 — 非 ASCII または制御文字のすべてが
&#N;になります。Nは Unicode コードポイントの 10 進表現です(例えば©は©)。標準外のすべてのバイトを可視化し ASCII セーフにしたいときに適しています。 - 16 進 — 同じ考えを 16 進コードポイントで:
©は©になります。コンパクトで、Unicode 表で見るコードポイント表記と自然に一致します。
デコードは、厳選された HTML5 サブセットの名前付きエンティティに加え、&#NN;(10 進)と &#xHH;(16 進)を認識します。認識できない名前付きエンティティは、推測するのではなく、そのまま残されます——間違った文字を黙って出力するより安全です。
使い方#
- 左上の切り替えでエンコードまたはデコードを選びます。
- オプションで、名前、10 進、16 進のいずれかを選びます。
- 左側の入力ペインに貼り付けます。
- 右側の出力ペインからエスケープ(またはエスケープ解除)された結果を読み、コピーをクリックします。
- サンプルはデモ文字列を読み込みます。クリアはペインをリセットします。
主な特徴#
- 1 つのセレクターで 3 つのエスケープスタイル。 再貼り付けなしで名前・10 進・16 進を切り替えられるため、出力の比較が簡単です。
- astral 文字に正確。 反復は UTF-16 コードユニットではなく Unicode コードポイント単位で行われるため、
🌍のような絵文字は壊れたサロゲートの組ではなく、1 文字(🌍)として扱われます。 - 厳選された安全なデコーダ。 名前付きエンティティのマップは、よくある HTML5 参照(コピーライト、商標、アクセント付き字母、数学記号、クォートとダッシュ)をカバーします。未知の名前は壊されるのではなく、そのまま通過します。
- DOM を使わない。 エンコードとデコードは純粋な文字列操作です——隠し
<div>の注入はないため、ロジックは完全にテスト可能で、ツール自身があなたの入力をマークアップとして解釈するリスクもありません。
実例#
マークアップとリテラルの記号を混ぜたフラグメントを取ります:
<a href="x">Tom & Jerry</a> © 2026
名前モードでは、危険な 5 文字だけがエスケープされ、© はそのまま残ります(構造的に危険ではないため):
<a href="x">Tom & Jerry</a> © 2026
10 進に切り替えると、© もコードポイントになり、主要な文字は数値形式に切り替わります:
<a href="x">Tom & Jerry</a> © 2026
16 進モードでは同じ文字が 16 進コードポイントとして現れます:
<a href="x">Tom & Jerry</a> © 2026
デコードはこれらすべてを逆転させます——デコードを選んで 3 つの出力のいずれかを貼り戻せば、© を含む元のフラグメントが得られます。
よくある質問#
文字列を HTML の中に置くために安全にするには、どのモードを使うべきですか?#
危険な 5 文字については、名前がほぼ常に正しい既定です——読みやすく、すべてのブラウザに理解され、出力は diff に適したまま保たれます。通常のエスケープではなく、非 ASCII 文字のすべてを ASCII セーフにする特別な必要性がある場合(例えば、上位バイトを拒否するトランスポートに向けてコンテンツを用意するなど)にだけ、10 進や16 進に手を伸ばしてください。
© をデコードしましたが、&mytag; のような変な名前がそのまま出てきました。なぜですか?#
デコーダは実際に知っているエンティティだけを解決します——よくある名前の厳選された HTML5 サブセットです。&mytag; は実際の HTML エンティティではないため、ツールは推測したり削ったりするのではなく、そのまま残します。本当に DTD 定義のすべてのエンティティを解決する必要があるなら、それは文字列コンバーターの範囲を超えて、本物の HTML 解析の領域です。
HTML エスケープだけで、JavaScript の文字列や URL の中でユーザー入力を安全にできますか?#
いいえ。それぞれのコンテキストには独自のルールがあります。HTML エスケープはマークアップの注入を防ぎますが、'); alert(1); // のような文字列は HTML では無害で、<script> の中では危険です。同じ入力は、リンクに入れる前に URL エンコードも必要です。一度ではなく、到着先のコンテキストに合わせてエスケープしてください。
16 進出力が小文字(© ではなく ©)なのはなぜですか?#
小文字の 16 進が慣習的でより整った形式であり、どのブラウザでも同じように解析されます。スタイルガイドのために大文字が必要なら、10 進モード(©)でその問題を完全に回避するか、出力を独自のケース変換に通してください。