NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング html/jquery 実装技術 設計技術

HTML4, HTML5エスケープ(文字参照)

投稿日:2021年10月10日 更新日:

数値文字参照・文字実体参照

  • 半角の不等号(<>等)などのHTML上で直接記述できない文字や記号を表記する方法が文字参照です。
    HTMLやXMLの基になっているSGMLから提供されている手段です。
  • 文字参照では、次の2種類の表記方法があります。
    分類 説明 備考
    数値文字参照 特定文字を数値で表記 &#1234;(10進数で指定)
    &#x04D2;(16進数で指定)
    16進数指定はHTML4.0から。
    文字実体参照 特定文字を文字列で表記 &nbsp;
    &lt;

    数値文字参照: Numeric Character References, 文字実体参照: Character Entity References

HTML4, HTML5のエスケープ

  • ページを生成する際にHTML上で意味を持つ文字をそのまま出力するとクロスサイトスクリプティング(XSS)等の攻撃を受ける可能性があります。そのため、HTML上で特別な意味を持つ次の文字は文字実体参照や数値文字参照でエスケープする必要があります。
    文字 名称 文字実体参照 Unicode
    コードポイント
    数値文字参照
    (10進数)
    数値文字参照
    (16進数)
    " クォーテーション
    (quotation mark)
    &quot; 34(U+00022) &#34; &#x22
    & アンパーサンド
    (ampersand)
    &amp; 38(U+00026) &#38; &#x26
    ' アポストロフィ
    (apostrophe)
    &apos;
    ※1
    39(U+00027) &#39; &#x27
    < 小なり
    (less-than)
    &lt; 60(U+0003C) &#60; &#x3c
    > 大なり
    (greater-than)
    &gt; 62(U+0003E) &#62; &#x3e
    ※1: &apos;はHTML4の文字実体参照としては定義されていないため、HTML4でアポストロフィを使用する場合は&#39;と表記する必要があります。&apos;はXML, XHTML, HTML5で文字実体参照として定義されていることや、モダンブラウザでこれらをサポートしているので、実際にはHTML4でも&apos;を使用できるようです。
  • 細かい話をすると、要素の値として出力する場合は「& < >」をエスケープする必要があります。属性値として出力する場合は「" '」をエスケープする必要があります。

HTML4における文字実体参照

  • HTML4の文字実体参照はHTML 4.01 Specification24 Character entity references in HTML 4で定義されています。
  • HTML4の場合、一つの文字実体参照で1文字を表現しています。
    (後述しますが、HTML5では一つの文字実体参照で2文字を表現する場合があります。)
  • 上記資料から作成した文字実体参照の一覧を次からダウンロードできます。
    • CharacterReference_HTML4.txt (タブ区切り)
    • CharacterReference_HTML4.xlsx (Excelブック形式)
      (Excelで文字実体参照に対応する文字を確認したい場合、UNICHAR関数にコードポイントを指定することで表示できます。例えば、「&euro;」(ユーロの通貨記号: €)を確認したい場合は”=UNICHAR(8364)”と指定します。)

HTML5における文字実体参照

  • HTML5の文字実体参照はHTML Living Standard13.5 Named character referencesで定義されています。このページから文字実体参照の一覧(JSON形式)をダウンロードできます。
  • HTML4とは異なり、単一の文字実体参照で2文字を表現している場合があります。
    互換性を維持するために、同じコードポイントでも”;”の有無の違いや、大小文字の有無の違いがあるものがあります。
    コードポイント例 文字実体参照
    169(U+0003E) &gt;, &GT;, &gt, &GT
    8807(U+02267) &gE;, &geqq;, &GreaterFullEqual;
    8807, 824(U+02267, U+00338) &ngE;, &ngeqq;, &NotGreaterFullEqual;
  • 上記資料(JSONファイル)から作成した文字実体参照の一覧を次からダウンロードできます。
    • CharacterReference_HTML5.txt (タブ区切り)
    • CharacterReference_HTML5.xlsx (Excelブック形式)
      (対応するコードポイントが2つある場合を想定し、コードポイント列、数値文字参照列、文字実体参照列はそれぞれ2列にしています。)
  • コードポイントと文字実体参照の対応を1:1にした一覧を次からダウンロードできます。
  • 上記で公開しているデータはC#の変換プログラムで生成しています。
    この説明に関しては、こちらをご覧ください。






-1. システムエンジニアリング, html/jquery, 実装技術, 設計技術

関連記事

保守運用

運用 と 保守 の 違い

若い頃は 運用 と 保守 の違いを調べても良くわからなかった… この辺を使い分けられる人をほとんど見たことない… ある事項が運用なのか保守なのかの話をすると認識が合わない&#8 …

SLF4Jの仕組みと使用方法

何気に使用しているSLF4Jの仕様やその仕組みを整理したいと思います。 前提 元ネタはSLF4J Manualサイトです。 2021年1月時点でSLF4Jは2.0系、1.8系、1.7系の3つがあります …

ASP.NET Core: IHttpClientFactoryの使用方法

とりあえず、どんなサンプルになるか知りたい人は下記のサンプルをご覧ください。 ASP.NET Core: IHttpClientFactoryの単純サンプル ASP.NET Core: IHttpCl …

wildflyへのwarデプロイの自動化

更新したWebアプリをWildflyにデプロイするのが面倒なのでスクリプトを作成してみました。 前提 実行環境はCentOS Linux 7です。 JavaEEのWebアプリの配布形式であるwarファ …

localhost(pfx)をPEM形式の証明書と鍵に変換

開発環境にて、Visual Studioのインストール時に追加されるlocalhostサーバ証明書(IIS Express Development Certificate)を、Apache httpd …