HTMLエンティティ変換
テキストを HTML 用にエスケープ、または & 形式の実体参照を文字に戻す
ローカル実行
loading…
このツールについて
テキストを HTML に安全に含められる形にエスケープします — & は &amp; に、< は &lt; になります — あるいは、エンティティだらけのテキストを読める文字にデコードします。名前付きエンティティ(&rarr;)、10 進数(&#169;)、16 進数(&#xA9;)の数値参照に対応しています。
エンコードには 2 つのレベルがあります。HTML の構造を壊す 5 つの必須文字(& < > " ')だけをエスケープするもの — 正しさのためにはこれで十分です — と、非 ASCII をすべてエスケープするもの。後者は、あなたとページの間のどこかでツールチェーンが UTF-8 を壊すときに役立ちます。数値のみモードは名前付きエンティティをスキップし、5 つの定義済みエンティティしか保証しない厳格な XML パーサーとの互換性を最大化します。
日常的に使うのはデコーダーのほうでしょう。スクレイピングした断片や &#x27; だらけの API レスポンスを貼り付ければ、きれいなテキストが得られます。未知のエンティティ名は推測されることなく、そのまま素通しされます。
よくある質問
- HTML でエスケープしなければならない文字はどれですか?
- テキストコンテンツでは & と < です。属性値では、属性を囲む引用符文字(" または ')も必要です。> のエスケープは慣例ですが厳密には必須ではありません。それ以外はすべて UTF-8 ドキュメントにそのまま書けます。
- エンティティエンコードは XSS への防御になりますか?
- 5 つの構造文字のエスケープは HTML コンテキストにおける出力エンコードの核心です — ただし HTML テキストと属性コンテキストに限ります。URL、JavaScript 文字列、CSS にはそれぞれのコンテキスト固有のエンコードが必要で、エンティティエスケープだけではそれらの場所での任意の注入を安全にはできません。
- 名前付きと数値、どちらのエンティティを出力すべきですか?
- 数値参照(&#xE9;)はあらゆる HTML・XML パーサーで動きます。名前付きエンティティは読みやすいですが、XML が定義済みなのは 5 つだけなので、&eacute; は厳格な XML/XHTML パイプラインを壊します。迷ったら数値です。
- なぜデータに &amp;#39;(二重エンコード)が見えるのですか?
- 2 つの層がそれぞれ 1 回ずつエンコードしたためです。最初のエンコードの & が 2 回目のパスで再びエスケープされました。ここで 2 回デコードすればテキストを復元できるので、その後、エンコードすべきでない層を見つけて修正してください。