onlinetools.dev

HTMLエンティティ変換

テキストを HTML 用にエスケープ、または & 形式の実体参照を文字に戻す

ローカル実行
loading…
このツールについて

テキストを HTML に安全に含められる形にエスケープします — & は &amp;amp; に、< は &amp;lt; になります — あるいは、エンティティだらけのテキストを読める文字にデコードします。名前付きエンティティ(&amp;rarr;)、10 進数(&amp;#169;)、16 進数(&amp;#xA9;)の数値参照に対応しています。

エンコードには 2 つのレベルがあります。HTML の構造を壊す 5 つの必須文字(&amp; &lt; &gt; " ')だけをエスケープするもの — 正しさのためにはこれで十分です — と、非 ASCII をすべてエスケープするもの。後者は、あなたとページの間のどこかでツールチェーンが UTF-8 を壊すときに役立ちます。数値のみモードは名前付きエンティティをスキップし、5 つの定義済みエンティティしか保証しない厳格な XML パーサーとの互換性を最大化します。

日常的に使うのはデコーダーのほうでしょう。スクレイピングした断片や &amp;#x27; だらけの API レスポンスを貼り付ければ、きれいなテキストが得られます。未知のエンティティ名は推測されることなく、そのまま素通しされます。

よくある質問

HTML でエスケープしなければならない文字はどれですか?
テキストコンテンツでは & と < です。属性値では、属性を囲む引用符文字(" または ')も必要です。> のエスケープは慣例ですが厳密には必須ではありません。それ以外はすべて UTF-8 ドキュメントにそのまま書けます。
エンティティエンコードは XSS への防御になりますか?
5 つの構造文字のエスケープは HTML コンテキストにおける出力エンコードの核心です — ただし HTML テキストと属性コンテキストに限ります。URL、JavaScript 文字列、CSS にはそれぞれのコンテキスト固有のエンコードが必要で、エンティティエスケープだけではそれらの場所での任意の注入を安全にはできません。
名前付きと数値、どちらのエンティティを出力すべきですか?
数値参照(&amp;#xE9;)はあらゆる HTML・XML パーサーで動きます。名前付きエンティティは読みやすいですが、XML が定義済みなのは 5 つだけなので、&amp;eacute; は厳格な XML/XHTML パイプラインを壊します。迷ったら数値です。
なぜデータに &amp;amp;#39;(二重エンコード)が見えるのですか?
2 つの層がそれぞれ 1 回ずつエンコードしたためです。最初のエンコードの &amp; が 2 回目のパスで再びエスケープされました。ここで 2 回デコードすればテキストを復元できるので、その後、エンコードすべきでない層を見つけて修正してください。
関連ツール