字符值引用

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

字符值引用(numeric character reference, NCR)是在標記語言SGML以及派生的如HTMLXML中常見的一種轉義序列結構,用來表示Unicode通用字符集 (UCS)中的單個字符. NCR可以表示在一個特定文檔中不能直接編碼字符,而該標記語言閱讀器軟件把每個NCR當作一個字符來處理。

例如,在ISO/IEC 8859-1編碼的網頁文件中使用了俄文字母或者希臘字母。由於該編碼不支持這些字母,就需要用NCR來表示。網頁瀏覽器可以正確地把這些NCR繪製為相應的西里爾字母或希臘字母。

例子

在SGML、HTML、XML中,下述是希臘字母Sigma的有效的字符值引用:

U+03A3 Σ GREEK CAPITAL LETTER SIGMA (3A316 = 93110
Unicode字符 進位制 標記語言中的字符值引用 效果
U+03A3 十進制 Σ Σ
U+03A3 十進制 Σ Σ
U+03A3 十六進制 Σ Σ
U+03A3 十六進制 Σ Σ
U+03A3 十六進制 Σ Σ

描述

標記語言使用的字符編碼方法(如ISO-8859),常常不能表示所有的Unicode字符,這就需要使用「轉義」機制來處理這些不能編碼的字符。

基於SGML標記語言允許使用7比特ASCII字符(即Unicode的前128個碼位)的序列來表示或者說引用任何Unicode字符。基於Unicode字符"碼位"的字符引用被稱作字符值引用。HTML 4與所有版本的XHTML及XML,這些Unicode字符的碼位可以表示為十進制或十六進制。語法如下:

字符U+0026 (&), 後跟隨U+0023 (#),後跟隨下列選擇之一:

  • 一個或更多十進制數字0(U+0030)到9(U+0039);
  • 字符U+0078 (x)後跟隨一個或更多個十六進制數字, 包括從0 (U+0030)到9(U+0039), 大寫拉丁字母從A (U+0041)到F (U+0046), 小寫拉丁字母從a(U+0061)到f(U+0066);

上述兩種選擇情形之後,跟隨字符U+003B (;)。 老的版本的HTML不支持十六進制表示法.

另外一種字符引用被稱作字符實體引用允許字符用其名字而不是碼位的值來引用。HTML定義了一些字符實體,但是並不多;其它字符只能直接用NCR來引用。

限制

通用字符集(UCS)是SGML以及HTML 4的文檔字符集,因此缺省地, 用這些標記語言寫的文檔的所有字符,必須出自UCS.

同時SGML並不禁止引用一個Unicode中未賦予字符的碼位, 例如。SGML派生的標記語言如HTML與XML限於引用那些賦予字符的碼位以及那些沒有永久性保留不賦予字符的碼位.

還存在其它的限制情況。例如在HTML 4中, , 引用了一個不可顯示的字符"換頁"控制字符,這是被允許的。但在XML中, 不能使用換頁符, 甚至不能引用換頁符。另一個例子, €引用另外一個控制字符,在HTML與XML中不能使用、引用, 但是如果出現在HTML中, 網頁瀏覽器通常不會把它標記為一個錯誤—有的甚至把它解釋為Windows-1252編碼中碼位為128的字符: "€",雖然這個字符應該表示為字符值引用€. 進一步的例子, 在2000年10月6日XML 1.0第二版發布之前,XML 1.0是基於老版的ISO 10646因此禁止使用碼位大於U+FFFD的字符,因此引用𐀀 (U+10000)字符是非法的。在XML 1.1與更新版本的XML 1.x, 這些引用是允許的,因為字符庫(repertoire)被大大擴展了。

參考文獻

參閲

外部連結