附錄:Unicode正規化
- 參見MediaWiki.org網站上的Unicode正規化注意事項。
維基媒體基金會以及其他大部分網路上的伺服器將Unicode字串以「標準等價合成法」(NFC,Normalization Form (Canonical) Composition)的形式儲存。這代表經常會有不同的Unicode字串被映射至相同的標準形式。在輸入Unicode字串並儲存頁面時,系統會將其自動轉換至標準形式。未經正規化的字串是無法被儲存至維基詞典頁面的。
等價性
[编辑]標準等價形式 | 替代表示法 | → | 標準等價合成法 |
---|---|---|---|
結合序列 | C ◌̧ | → | Ç |
組合標記的順序 | q + ̣+ ̇ | → | q+ ̇+ ̣ |
諺文 | ᄀ +ᅡ | → | 가 |
單例形式 | Å | → | Å |
希伯來文 | ל ָ ֽ ִ | → | ל ִ ָ ֽ |
問題
[编辑]大部分時候,標準等價合成法能使處理文字更加容易,但仍會出現一些語義/非語義的怪異之處。
以下舉出4個單一字元不是標準等價合成形式的範例。
- 有時,一個替代的單一字元是正規的組成形式
- 範例:
U+212B
(Å - ANGSTROM SIGN)會被轉換至U+00C5
(Å - LATIN CAPITAL LETTER A WITH RING ABOVE)
- 範例:
- 對某些腳本來說,預先合成的字元並非首選
- 如果在Unicode 3.0之前就有分解,而在之後加入的預合成字元,則優先選擇該分解組成形式
- 當分解以非起始點開始時,分解組合被優先於預合成字元
在一些常見的情況下,Unicode對兩個變音符的典型排序是違反直覺的,並且/或者與某些現有的軟件互操作性很差。在其他不太常見的情況下,問題在於雙音符不應該有一個正規的排序,因為這兩個排序實際上是不對等的(也就是說,這兩個雙音符的Canonical_Combining_Class(ccc)屬性應該有相同的值,但它們的值卻不同)。例如,希伯來語的לִַ("lai")被錯誤地正規化為לִַ("lia")。
由於該轉換是自動的,因此不可能存在非NFC形式的頁面。試圖明確地鏈接到非NFC形式,Å將顯示非NFC形式,但當點擊時將把用戶帶到NFC頁面的Å。
顯示
[编辑]可在頁面中使用{{HTML char}}
顯示非標準等價合成形式的字元:「{{HTML char|212B}}
」會顯示成「Å」。
要注意兩個單一字元之間的正規等價關系,請在NFC字元的相應{{Normalization}}
模板的標題字段中使用{{Character info}}
(見Å的例子)。
要注意一個預組合字元的NCF是一個分解,請在NFC分解的相應{{Decomposed}}
模板的標題字段中使用{{Character info}}
(見क़的例子)。
備註
[编辑]維基媒體基金會不強制使用會組合更多字元(例如「N」與「ℕ」)的相容等價法。