数値文字参照・文字実体参照
- 半角の不等号(<>等)などのHTML上で直接記述できない文字や記号を表記する方法が文字参照です。
HTMLやXMLの基になっているSGMLから提供されている手段です。 - 文字参照では、次の2種類の表記方法があります。
分類 説明 例 備考 数値文字参照 特定文字を数値で表記 Ӓ
(10進数で指定)Ӓ
(16進数で指定)16進数指定はHTML4.0から。 文字実体参照 特定文字を文字列で表記
<
数値文字参照: Numeric Character References, 文字実体参照: Character Entity References
HTML4, HTML5のエスケープ
- ページを生成する際にHTML上で意味を持つ文字をそのまま出力するとクロスサイトスクリプティング(XSS)等の攻撃を受ける可能性があります。そのため、HTML上で特別な意味を持つ次の文字は文字実体参照や数値文字参照でエスケープする必要があります。
文字 名称 文字実体参照 Unicode
コードポイント数値文字参照
(10進数)数値文字参照
(16進数)" クォーテーション
(quotation mark)" 34(U+00022) " " & アンパーサンド
(ampersand)& 38(U+00026) & & ' アポストロフィ
(apostrophe)'
※139(U+00027) ' ' < 小なり
(less-than)< 60(U+0003C) < < > 大なり
(greater-than)> 62(U+0003E) > > ※1:'
はHTML4の文字実体参照としては定義されていないため、HTML4でアポストロフィを使用する場合は'
と表記する必要があります。'
はXML, XHTML, HTML5で文字実体参照として定義されていることや、モダンブラウザでこれらをサポートしているので、実際にはHTML4でも'
を使用できるようです。 - 細かい話をすると、要素の値として出力する場合は「& < >」をエスケープする必要があります。属性値として出力する場合は「" '」をエスケープする必要があります。
HTML4における文字実体参照
- HTML4の文字実体参照はHTML 4.01 Specificationの24 Character entity references in HTML 4で定義されています。
- HTML4の場合、一つの文字実体参照で1文字を表現しています。
(後述しますが、HTML5では一つの文字実体参照で2文字を表現する場合があります。) - 上記資料から作成した文字実体参照の一覧を次からダウンロードできます。
- CharacterReference_HTML4.txt (タブ区切り)
- CharacterReference_HTML4.xlsx (Excelブック形式)
(Excelで文字実体参照に対応する文字を確認したい場合、UNICHAR関数にコードポイントを指定することで表示できます。例えば、「€」(ユーロの通貨記号: €)を確認したい場合は”=UNICHAR(8364)”と指定します。)
HTML5における文字実体参照
- HTML5の文字実体参照はHTML Living Standardの13.5 Named character referencesで定義されています。このページから文字実体参照の一覧(JSON形式)をダウンロードできます。
- HTML4とは異なり、単一の文字実体参照で2文字を表現している場合があります。
互換性を維持するために、同じコードポイントでも”;”の有無の違いや、大小文字の有無の違いがあるものがあります。コードポイント例 文字実体参照 169(U+0003E) >
,>
,>
,>
8807(U+02267) ≧
,≧
,≧
8807, 824(U+02267, U+00338) ≧̸
,≧̸
,≧̸
- 上記資料(JSONファイル)から作成した文字実体参照の一覧を次からダウンロードできます。
- CharacterReference_HTML5.txt (タブ区切り)
- CharacterReference_HTML5.xlsx (Excelブック形式)
(対応するコードポイントが2つある場合を想定し、コードポイント列、数値文字参照列、文字実体参照列はそれぞれ2列にしています。)
- コードポイントと文字実体参照の対応を1:1にした一覧を次からダウンロードできます。
- CharacterReference_HTML5_unique_codepoint.txt (タブ区切り)
- CharacterReference_HTML5_unique_codepoint.xlsx (Excelブック形式)
(末尾が”;”で終わるもの、大文字より小文字、より短い名前を持つ文字実体参照に対応付けしています。)
- 上記で公開しているデータはC#の変換プログラムで生成しています。
変換プログラムはこちらで紹介しています。