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

テキストを HTML 内に安全に入れられるようエスケープしたり、& や € のようなエンティティを読める文字に戻したりできます。

ブラウザ内で動作登録不要アップロードなし

エンコード結果

HTML エンティティ エンコーダー / デコーダーの使い方

  1. テキストをエスケープするにはエンコード、エンティティを文字に戻すにはデコードを選びます。
  2. エンコード時は、エスケープする文字を選びます:HTML の特殊文字のみ、非 ASCII 文字もすべて、または英字と数字以外のすべて。
  3. 名前付きエンティティ(é)、10 進数(é)、16 進数(é)から選びます。
  4. 結果をコピーします。デコード時は、不明なエンティティが一覧表示されるので入力ミスを見つけられます。

なぜ HTML をエスケープするのか?

HTML では 5 つの文字が特別な意味を持ちます。& はエンティティの開始、< と > はタグの区切り、" と ' は属性値の終わりです。これらを含むユーザー入力をエスケープせずにページへ挿入すると、レイアウトが崩れたり、最悪の場合スクリプトが注入されたり(クロスサイトスクリプティング、XSS)します。エスケープするとこれらは &amp;、&lt;、&gt;、&quot;、&#x27; になり、ブラウザはテキストとして表示します。

名前付き・10 進・16 進エンティティ

すべての Unicode 文字は数値参照で書けます。€ なら 10 進数の &#8364; または 16 進数の &#x20AC; です。よく使う文字の多くには、&euro;、&copy;、&nbsp; のような読みやすい名前もあります。数値参照は、名前付きエンティティを 5 つしか定義していない XML を含め、どこでも使えます。名前付きエンティティはソースコード上で読みやすいのが利点です。

非 ASCII 文字もエンコードが必要?

ページが UTF-8 で配信されていれば不要です。現代のほぼすべてのサイトがそうです(<meta charset="utf-8">)。é、ü、日本 のような文字はそのまま書けます。エンコードが役立つのは、レガシーシステムやメールテンプレート、処理の途中で非 ASCII テキストが壊れる場合です。

エスケープは文脈ごとに異なる

HTML エンティティのエスケープが守るのは、要素の内容や引用符で囲んだ属性値に置くテキストです。<script> ブロック内の値、インラインのイベントハンドラー、CSS、URL にはそれぞれ専用のエンコードが必要で、これだけでは不十分です。手作業で文字列を組み立てるより、フレームワークの自動エスケープ(React、Vue、Jinja、Blade)を使いましょう。

よくある質問

HTML でエスケープが必須の文字は?
テキストの内容では & と < が必須です。属性値では、使用している引用符もエスケープしてください。5 つすべて(& < > " ')をエスケープするのが安全な既定です。
&amp;nbsp; とは何ですか?
ノーブレークスペース(U+00A0)です。見た目はスペースですが、改行を防ぎ、隣接するスペースとまとめられることもありません。
&amp;copy2024 が ©2024 にデコードされるのはなぜですか?
後方互換性のため、ブラウザは &copy、&amp、&lt など一部のレガシーなエンティティを、末尾のセミコロンがなくてもデコードします。このデコーダーも同じルールに従います。自分で HTML を書くときは必ずセミコロンを付けてください。
アポストロフィは &amp;apos; と &amp;#39; のどちらですか?
&apos; は HTML5 と XML では有効ですが HTML 4 では無効です。そのため数値の &#39; または &#x27; が最も互換性の高い選択肢で、このエンコーダーもそれを出力します。

関連ツール