UTF-8 vs. UTF-16
最近開始計畫試著重寫 libchewing 的 Sqlite3 backend 與 Unicode 支援 一直在煩惱程式內部該用什麼編碼來處理,相較於 UTF-16 會含有 ‘’ 這種東西在裡面 UTF-8 的不定長度特性倒還容易掌控(其實 UTF-16 也是不定長度,但是很少用到), 因此今天決定暫時先用 UTF-8 來做實驗 :)
翻了翻 UTF-8 的文件,從 vim 的 source code 裡找到快速的 UTF-8 長度計算法 基本上這樣就夠了,用 UTF-8 的好處就是可以跟 ASCII 相容,少掉不少麻煩。 接下來的問題是,要不要保留 tsi.src 裡的注音符號表示法?基本上若容易 parse 的話 我是傾向保留的,畢竟這種格式比較容易懂。如果明天可以寫出相容於原本 key2pho.c 裡面 的 parse 方法的 code 的話,就這樣吧 :p
基本上以酷音的斷詞法來說,才不管你用的是什麼編碼,只要有詞頻與注音編號即可 所以可能可以不用改太多斷詞部份的地方(在開始拆掉斷詞模組之前),酷音內部的 「詞」與「字」的存法相當奇特,應該是從 XCIN 來的,把 wchar_t 用在神奇的地方 (跟原本用途應該不太一樣),不知道這樣用有什麼好處……
先把 mksqlitedb 寫出來再說 ;-)