← Back to list

中日韓統一表意文字 — Unicode歷史沙石(之一)

眾所周知,現今東亞地區所用嘅漢字都係係源自於幾千年前嘅中國,然後各自互相影響同發展。

I.T. 9 遊戲日誌 · 2020-03-04 11:01 · 151 claps · 4.6 min read paywalled
#unicode #unihan
Open on Medium ↗

中日韓統一表意文字 — Unicode歷史沙石(之一)

眾所周知,現今東亞地區所用嘅漢字都係係源自於幾千年前嘅中國,然後各自互相影響同發展。

喺發明Unicode嘅年代,電腦並未有好發達,儲存空間真係要慳得一個就一個,所以點樣將個字集縮細就係主要考慮之一。(1990年代 — 386用嘅RAM大概HK$1000/1MB一條、一般Harddisk大概100至500MB左右)

所以催生咗中日韓統一表意文字/Han Unification/Unihan計劃。

設計考慮

當年各個漢字使用圈都已經為自己嘅語言制定咗自己嘅編碼方式。例如台灣為繁體中文制定嘅Big5、中國為簡體中文制定嘅GB2312、日語嘅Shift JIS、韓語嘅KS X 1001等等。如果將上面各種舊制嘅碼位(code point)都對應到一個獨立嘅Unicode碼位,就應該2個byte共65536個位都唔夠位擺。既然漢字有咁多重複,噉就不如整理一下,將一模一樣嘅字都用同一個碼位啦?

呢個就係Unihan計劃,而實行起上來就依呢兩種原則。

寫法差異(表意文字認同原則)

不過對字型或筆畫有啲執著嘅你應該會發現,即使同一個字,唔同國家嘅標準寫法都會唔一樣。Unihan嘅解決方案就統一咗佢,然後係留俾字型去處理。

就例如以下嘅字,都係同一個碼位,但個寫法各有些微差異。

雖然碼位一樣,但為唔同語言而造嘅字型所顯示嘅樣都唔一樣。

雖然碼位一樣,但為唔同語言而造嘅字型所顯示嘅樣都唔一樣。

向前兼容( 字源分離原則

Unicode係希望以舊編碼所記錄嘅資料,轉換成Unicode之後,可以一碼不差地轉返去舊編碼,即係所謂嘅向前兼容。

所以有啲字,雖然其實只係書法上嘅差異,但因為喺傳統編碼已經分配咗唔同嘅碼位,所以Unicode都為咗上述原因而迫住要。例如戶、户、戸呢幾隻字…

三個戶字碼位都唔一樣。「/」係該字型冇收錄。

三個戶字碼位都唔一樣。「/」係該字型冇收錄。

不過

正如好多偉大嘅工程一樣,通常都冇辦法100%完美。

有意定冇意嘅分開?

又或兩、两、両,雖然Big5只有「兩」、GB2312只有「两」、Shift JIS只有「両」,但就分開收錄咗。噉都好,喺要表示重量「兩両」嘅時、可以容易打到出來。

三個兩字碼位都唔一樣。「/」係該字型冇收錄。

三個兩字碼位都唔一樣。「/」係該字型冇收錄。

整合錯誤

例如「直」係有統一,但「值」/「値」卻分開咗兩個碼位。而喺舊編制都只有收錄「值」/「値」其中一隻寫法,並冇兩個字同時收錄嘅情況。

藍色係舊編碼有收錄嘅字

藍色係舊編碼有收錄嘅字

異體字唔獨立收錄嘅問題係…

有啲字可能喺唔同嘅古籍、唔同嘅書法家都有唔同嘅寫法,流存至今變咗做異體字。如果每種異體係冇一個碼位嘅話,就好難喺以純文字方式(plain text format)去將呢啲資訊存儲,尤其不利記錄古籍等等。

另外,有時唔同嘅字係屬於異體定係獨立嘅字都未必有清晰界線,甚至乎涉及政治和主觀判斷,都唔係想統一哂就能夠統一哂。

但異體字都收錄埋嘅問題係…

首先係編碼嘅膨脹,有啲違背本來要做Unihan嘅意義,碼位空間亦的確未必夠位。

第二,異體字永遠都收唔完。分分鐘同一個書法家都會寫出唔同嘅字型,而係唔係真係要去到籇書、金書、甲骨文都收入Unicode?

第三,如果收埋異體字,一啲睇落差唔多嘅字,因喺電腦屬於唔同嘅碼位就會被當成唔一樣,搜尋、比較都會出問題。

現實

認命啦,冇嘢係100%㗎。Unihan即使唔係十全十美,但99.99%嘅日常使用者都唔會留意到,佢的確解決咗絕大多數嘅問題。

至於0.01%,都唔係冇解…

同字碼嘅異體字 — Variation Selector

通過喺一隻字後面補一個Variation Selector字符 (有VS1到VS16共16個),就可以揀選嗰隻字嘅另一個異體版。Unicode而家公報咗幾百隻相容表意文字,通過呢種方式收錄新發現嘅異體字,就唔需多佔一個碼位。

有啲字型可能更收錄咗比Unicode標準更多嘅異體,同樣可以通過Variation Selector去「打」出來。

搜尋障礙

漢字有冇異體字都好,本來搜尋Unicode就有好多其他障礙。例如…

  • 正規化 (Normalization, Composition問題)和合字 (Ligature)
  • 大細階 唔同語言之下,一個字嘅大細楷可以會對應唔同嘅字,例如英文: i大楷係I,土耳奇文i大楷係İ。但兩者嘅i都係同一個碼位。

漢字異體字,都係其中一個要考慮嘅問題來啫。

而家要受Unihan同異體字問題影響嘅使用者,都有工具有方法去拆解。至於絕大部份嘅使用者,日常生活都唔會有問題,我覺得都算幾成功㗎。

[embed]BOM — Unicode歷史沙石(之一) Unicode雖然係電腦界中一大好偉大嘅發明,但一個咁大型嘅project、加上人類語言本身嘅複雜性,少不免到後期先發現有一啲設計原來係幾咁憨居,但卻已經成為歷史嘅一部份。medium.com


메타데이터
post_id
f1d08c5f10e4
slug
unicode-problem-and-unihan-f1d08c5f10e4
url
https://medium.com/@it9gamelog/unicode-problem-and-unihan-f1d08c5f10e4
canonical_url
https://medium.com/@it9gamelog/unicode-problem-and-unihan-f1d08c5f10e4
author_url
https://medium.com/@it9gamelog
status
ok
fetched_at
2026-07-29 06:11:15