HTML Entity Encoder & Decoder

特殊文字をHTML エンティティにエンコードするか、エンティティをプレーンテキストにデコードします。名前付き、10進数、または16進数形式を選択します。すべてブラウザ内で動作します。サーバーにデータは送信されません。

動作方法: テキストを貼り付けるか入力し、エンコードまたはデコードモードを選択して、エンティティ形式を選択します。出力は即座に更新されます。可読性のために名前付きエンティティを使用するか、最大互換性のために10進数または16進数を使用します。データはブラウザから出ることはありません。

98 文字32 個のエンティティが見つかりました
文字名前付き10進数16進数説明
&&&&Ampersand
<&lt;&#60;&#x3C;Less than
>&gt;&#62;&#x3E;Greater than
"&quot;&#34;&#x22;Double quote
'&#39;&#39;&#x27;Single quote
&nbsp;&#160;&#xA0;Non-breaking space
©&copy;&#169;&#xA9;Copyright
®&reg;&#174;&#xAE;Registered
&trade;&#8482;&#x2122;Trademark
&mdash;&#8212;&#x2014;Em dash
&euro;&#8364;&#x20AC;Euro

HTML エンティティとは

HTML エンティティは、HTMLで予約された意味を持つか、ソースコードに直接入力できない文字を表すために使用される特別なシーケンスです。最も重要な例はアンパサンド(&)で、すべてのエンティティの開始をマークし、リテラルテキストとして表示される場合は&amp;と記述する必要があります。同様に、小なり記号(<)は&lt;と記述してブラウザがHTMLタグの開始として解釈するのを防ぐ必要があります。エンティティは3つの形式に従います:名前付き(&amp;)、10進数(&#38;)、16進数(&#x26;)。3つすべて同じ文字を参照します。選択は可読性の好みとターゲットパーサーの互換性に応じて決まります。

HTML文字をエンコードする理由

HTML文字のエンコードは2つの理由から必須です:正確性とセキュリティです。正確性の面では、<、>、&などの文字はHTML構文の一部です。これらがテキストコンテンツにエスケープされずに表示される場合、ブラウザはマークアップとして誤釈する可能性があり、ページレイアウトが破損します。セキュリティの面では、ユーザーが提供する入力をHTMLでレンダリングする前にエンコードしないことは、クロスサイトスクリプティング(XSS)攻撃の根本原因です。これは最も一般的なウェブ脆弱性の1つです。攻撃者はフォームフィールドまたはURLパラメータを通じて<script>タグを挿入でき、サーバーがその入力をエンコードせずにレンダリングする場合、悪質なスクリプトがすべての訪問者のブラウザで実行されます。常に出力をエンコードし、生の入力を信頼しないでください。

名前付きエンティティ vs 10進数 vs 16進数エンティティ

&copy;、&euro;、&mdash;などの名前付きエンティティは人間が読みやすく、すべての最新ブラウザでサポートされています。10進数エンティティはUnicodeコードポイントを基数10で使用します(©の場合は&#169;)。16進数エンティティは基数16を使用します(同じ文字の場合は&#xA9;)。名前付きエンティティは定義されたUnicode文字のサブセットのみに存在します。そのサブセット外のすべてについては、10進数または16進数を使用する必要があります。16進数表記はUnicodeドキュメントと自然に整合します(例:U+0026は&#x26;にマップ)。これはUnicodeコード表で作業する場合の推奨される選択です。HTMLの属性内では、常に二重引用符を&quot;または&#34;としてエンコードして、属性インジェクションを防止してください。

HTML エンティティのベストプラクティス

  • XSS攻撃を防ぐために、HTMLでレンダリングする前に常にユーザー入力をエンコードしてください
  • &を&amp;として最初にエンコードしてから、他の文字をエンコードして、ダブルエンコードを避けてください
  • &copy;、&reg;、&trade;などの一般的なシンボルには名前付きエンティティを使用して、可読性を向上させてください
  • レガシーパーサーをターゲットにする場合、U+007Fを超えるUnicode文字には10進数または16進数エンティティを使用してください
  • HTMLの属性内では、属性を壊すインジェクションを防ぐために、引用符("および')をエンコードしてください
  • 「すべてエンコード」を有効にして、最大の互換性のためにすべての非ASCII文字をエンコードしてください
  • エンティティをデコードしてからテキストロジックを処理してください。生のエンティティ文字列で操作しないでください
  • &nbsp;(ノーブレーキングスペース)は不要な改行を防ぎますが、大量に通常のスペースを置き換えるべきではありません