HTML Entity Encoder & Decoder
特殊文字をHTML エンティティにエンコードするか、エンティティをプレーンテキストにデコードします。名前付き、10進数、または16進数形式を選択します。すべてブラウザ内で動作します。サーバーにデータは送信されません。
動作方法: テキストを貼り付けるか入力し、エンコードまたはデコードモードを選択して、エンティティ形式を選択します。出力は即座に更新されます。可読性のために名前付きエンティティを使用するか、最大互換性のために10進数または16進数を使用します。データはブラウザから出ることはありません。
&&&Ampersand<<<Less than>>>Greater than"""Double quote'''Single quote   Non-breaking space©©©Copyright®®®Registered™™™Trademark———Em dash€€€EuroHTML エンティティとは
HTML エンティティは、HTMLで予約された意味を持つか、ソースコードに直接入力できない文字を表すために使用される特別なシーケンスです。最も重要な例はアンパサンド(&)で、すべてのエンティティの開始をマークし、リテラルテキストとして表示される場合は&と記述する必要があります。同様に、小なり記号(<)は<と記述してブラウザがHTMLタグの開始として解釈するのを防ぐ必要があります。エンティティは3つの形式に従います:名前付き(&)、10進数(&)、16進数(&)。3つすべて同じ文字を参照します。選択は可読性の好みとターゲットパーサーの互換性に応じて決まります。
HTML文字をエンコードする理由
HTML文字のエンコードは2つの理由から必須です:正確性とセキュリティです。正確性の面では、<、>、&などの文字はHTML構文の一部です。これらがテキストコンテンツにエスケープされずに表示される場合、ブラウザはマークアップとして誤釈する可能性があり、ページレイアウトが破損します。セキュリティの面では、ユーザーが提供する入力をHTMLでレンダリングする前にエンコードしないことは、クロスサイトスクリプティング(XSS)攻撃の根本原因です。これは最も一般的なウェブ脆弱性の1つです。攻撃者はフォームフィールドまたはURLパラメータを通じて<script>タグを挿入でき、サーバーがその入力をエンコードせずにレンダリングする場合、悪質なスクリプトがすべての訪問者のブラウザで実行されます。常に出力をエンコードし、生の入力を信頼しないでください。
名前付きエンティティ vs 10進数 vs 16進数エンティティ
©、€、—などの名前付きエンティティは人間が読みやすく、すべての最新ブラウザでサポートされています。10進数エンティティはUnicodeコードポイントを基数10で使用します(©の場合は©)。16進数エンティティは基数16を使用します(同じ文字の場合は©)。名前付きエンティティは定義されたUnicode文字のサブセットのみに存在します。そのサブセット外のすべてについては、10進数または16進数を使用する必要があります。16進数表記はUnicodeドキュメントと自然に整合します(例:U+0026は&にマップ)。これはUnicodeコード表で作業する場合の推奨される選択です。HTMLの属性内では、常に二重引用符を"または"としてエンコードして、属性インジェクションを防止してください。
HTML エンティティのベストプラクティス
- XSS攻撃を防ぐために、HTMLでレンダリングする前に常にユーザー入力をエンコードしてください
- &を&として最初にエンコードしてから、他の文字をエンコードして、ダブルエンコードを避けてください
- ©、®、™などの一般的なシンボルには名前付きエンティティを使用して、可読性を向上させてください
- レガシーパーサーをターゲットにする場合、U+007Fを超えるUnicode文字には10進数または16進数エンティティを使用してください
- HTMLの属性内では、属性を壊すインジェクションを防ぐために、引用符("および')をエンコードしてください
- 「すべてエンコード」を有効にして、最大の互換性のためにすべての非ASCII文字をエンコードしてください
- エンティティをデコードしてからテキストロジックを処理してください。生のエンティティ文字列で操作しないでください
- (ノーブレーキングスペース)は不要な改行を防ぎますが、大量に通常のスペースを置き換えるべきではありません