Re: [問題] 一個奇怪的漢字編碼問題(Unihan?)

看板Perl作者 (霸格尼尼)時間9年前 (2015/09/27 23:14), 9年前編輯推噓1(102)
留言3則, 2人參與, 最新討論串5/5 (看更多)
除了Unihan,Unicode還有定義NFC/NFD/NFKC/NFKD四種normalization 後面兩個相容性編碼不說了,前兩個正規等價: NFC是等價組碼 NFD是等價拆碼 在unicodedata裡面目前「拆組」對中文來說意義不大,主要是歐洲語言和韓語才有 拆組的等價性問題,比如說e上面一撇,可以是單獨一個codepoint, 也可以是e的codepoint+那一撇的codepoint 中文的組合(IDC組字)目前不在unicodedata管轄範圍 在那些unicode資料網站其實查U+FA97可以看到NFD/NFC都指向U+6D41 NFC實際上也是先經過NFD再組起來,所以對中文而言我們看NFD就好了 unicodedata的原始資料在 ftp://ftp.unicode.org/Public/7.0.0/ucd/UnicodeData.txt 不過他需要經過一些處理才能得到NFD的mapping 剛好有一份處理好的在 https://github.com/buganini/bsdconv/blob/master/modules/inter/_NFD.txt 韓文的拆組不在裡面,因為依照unicode標準定義韓文的拆組是用程式計算的 裡面去掉有拆碼的row(有逗號的)應該就都是CJK漢字了 把unicodedata轉成NFD table的程式在 https://github.com/buganini/bsdconv/blob/master/tools/unicode_gen.py 如果想要用肉眼看_NFD.txt 可以把bsdconv裝起來然後執行 bsdconv bsdconv,utf-8:utf-8 _NFD.txt -- 其實個人覺得Unihan比較偏向給人用的知識庫, 裡面包含不少直接拿來給程式用會覺得怪怪的mapping -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 128.199.200.203 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1443366876.A.655.html ※ 編輯: buganini (128.199.200.203), 09/27/2015 23:18:53

09/27 23:20, , 1F
忽然發現這裡是Perl版,所以用 http://0rz.tw/XNch8
09/27 23:20, 1F

09/27 23:20, , 2F
就好了,不需要自己弄table啦xd
09/27 23:20, 2F
※ 編輯: buganini (128.199.200.203), 09/27/2015 23:57:31

11/01 06:45, , 3F
11/01 06:45, 3F
文章代碼(AID): #1M20VSPL (Perl)
文章代碼(AID): #1M20VSPL (Perl)