跳转到内容

附錄:Unicode正規化

維基詞典,自由的多語言詞典
參見MediaWiki.org網站上的Unicode正規化注意事項

維基媒體基金會以及其他大部分網路上的伺服器將Unicode字串以「標準等價合成法」(NFC,Normalization Form (Canonical) Composition)的形式儲存。這代表經常會有不同的Unicode字串被映射至相同的標準形式。在輸入Unicode字串並儲存頁面時,系統會將其自動轉換至標準形式。未經正規化的字串是無法被儲存至維基詞典頁面的。

等價性

[编辑]
標準等價形式 替代表示法 標準等價合成法
結合序列 C ◌̧ Ç
組合標記的順序 q + ̣+ ̇ q+ ̇+ ̣
諺文 ᄀ +ᅡ
單例形式  Å
希伯來文 ל ָ ֽ ִ ל ִ ָ ֽ

問題

[编辑]

大部分時候,標準等價合成法能使處理文字更加容易,但仍會出現一些語義/非語義的怪異之處。

以下舉出4個單一字元不是標準等價合成形式的範例。

  1. 有時,一個替代的單一字元是正規的組成形式
    • 範例:U+212B(Å - ANGSTROM SIGN)會被轉換至U+00C5Å - LATIN CAPITAL LETTER A WITH RING ABOVE)
  2. 對某些腳本來說,預先合成的字元並非首選
    • 範例:U+0958(क़ - DEVANAGARI LETTER QA)會被轉換至分解過的U+0915क़ - DEVANAGARI LETTER KA)+ U+093C - DEVANAGARI SIGN NUKTA)
  3. 如果在Unicode 3.0之前就有分解,而在之後加入的預合成字元,則優先選擇該分解組成形式
    • 範例:U+2ADC(⫝̸ - FORKING)會被轉換至U+2ADD⫝̸ - NONFORKING)+ U+0338̸ - COMBINING LONG SOLIDUS OVERLAY)
  4. 當分解以非起始點開始時,分解組合被優先於預合成字元
    • 範例:U+0344(̈́ - COMBINING GREEK DIALYTIKA TONOS)會被轉換至U+0308̈ - COMBINING DIAERESIS (DIALYTIKA))+ U+0301́ - COMBINING ACUTE ACCENT (OXIA, TONOS))

在一些常見的情況下,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」與「」)的相容等價法。

參見

[编辑]