環境によっては使用したい符号化方式では利用できない文字やその環境では直接入力でない文字を使用したいときもある。また"<"や"""のようにhtml文章を記述する際に使用する語句をそのまま文字として使用するとUAにいらぬ誤解を与えることにもなる。そのような場合は数値文字参照を利用すると良い。数値文字参照とはUCSと呼ばれる文字集合のcode positionを直接指定する方法である。
具体的に説明すると日本語版windowsMeのnotepadでhtml文章を作成したとしよう。文章は基本的に日本語だが一部に您好 啊(ニーハオ)という中国の文字を使用したいとする、しかし日本語版Meの付属notepadでは好はともかく、您啊という文字を使用できない、そこで您 啊のUCSのcode positionである21834、24744をそれぞれ&#と;で囲んだ您啊を記述してやればよ い。これなら&と#、;そして数字しか使用していないのでshift_jisのみならずどんな文字符号化方法を用いても您啊を指定することができ る。UAは您啊という文字列をUCS(国際文字集合)の中からcode position24744番と21834番に対応する您啊に置き換えてくれる。
また"<br>"という文字列を表現したくても、そのまま記述すればUAがbr要素と解釈して強制改行がはいるだけである。そこでタグ区切り子の"<"と">"を数値文字参照で記述して"<br>"とすれば、<br>を文字として表現できる。他にhtmlで使用する文字には属性値を囲む際に利用する引用符の"""(")と"'"(')、文字参照に使用する"&" (&)等がある。cgiでBBS等を作成する場合、これらの文字は文字参照に置き換えるのが製作者の当然の配慮といえよう、なぜならタグ をタグとして投稿することができるのであればimg要素やobject要素、meta要素などを用いて悪意のあるプログラムでBBSの閲覧者に攻撃を加え るたり、そのサイトに相応しくない画像で嫌がらせをする等の不正行為を可能にするからである。
例では符号位置を10進数で指定した数値文字参照をあげたが、16進数で指定するす数値文字参照もある、您好啊の場合 は您好啊になる。16進数の符号位置を&#xと;で囲めばよい。16進数で 使うa-fは大文字と小文字の違いはないが、符号位置直前のxについてはxhtmlの場合は小文字のxを使用しなければならない。
This is a<em> pen</em>.
上記のようなタグ付けではThis is apenと表示されてしまう。This is a <em>pen</em>.
とするのが正解。