附录: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”与“”)的相容等价法。

参见 编辑