中日韓統一表意文字 — Unicode歷史沙石(之一)
眾所周知,現今東亞地區所用嘅漢字都係係源自於幾千年前嘅中國,然後各自互相影響同發展。
中日韓統一表意文字 — 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同異體字問題影響嘅使用者,都有工具有方法去拆解。至於絕大部份嘅使用者,日常生活都唔會有問題,我覺得都算幾成功㗎。
메타데이터
- 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