漢字轉(zhuǎn)拼音
基本思路就是從 unicode.org 獲取到字符碼以及對(duì)應(yīng)的拼音Unihan.zip,然后再通過腳本解析成需要的格式,并輸出為 dictionary。
(其中,Unihan.zip 內(nèi)容說明見:reports/tr38)
在使用時(shí),將輸入字符串解析成單個(gè)的漢字,去查字典。
Unicode 字符平面
當(dāng)前的 Unicode 字符分為17組編排,每組稱為平面(Plane),而每平面擁有65536(即216)個(gè)代碼點(diǎn)。然而當(dāng)前只用了少數(shù)平面
unicode 編碼采用了 2bytes 進(jìn)行表達(dá)。表達(dá)方式為:[0 - 0x10][0 ~ 0xFFFF]
, 第一部分為平面id,第二部分就是字符值。
其中,常見的有:
- 0號(hào)平面,基本多文種平面,Basic Multilingual Plane,簡(jiǎn)稱 BMP
- 1號(hào)平面,多文種補(bǔ)充平面,Supplementary Multilingual Plane,簡(jiǎn)稱 SMP
- 15號(hào)平面,保留作為私人使用區(qū)(A區(qū)),Private Use Area-A,簡(jiǎn)稱 PUA-A
- 16號(hào)平面,保留作為私人使用區(qū)(B區(qū)),Private Use Area-B,簡(jiǎn)稱 PUA-B
GB2312、GBK、GB18030
借著這個(gè)機(jī)會(huì),又重新學(xué)習(xí)了下 GB2312、GBK、GB18030 這幾種漢字編碼的歷史。
- GB2312 或 (GB2312-80)
是中國(guó)國(guó)家標(biāo)準(zhǔn)簡(jiǎn)體中文字符集,全稱《信息交換用漢字編碼字符集·基本集》,又稱 GB 0,由中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布,1981 年 5 月 1 日實(shí)施.
它采用兩個(gè)字節(jié)表示一個(gè)字符,同時(shí)兼容了 ASCII。為了兼容 ASCII,它規(guī)定,一個(gè)小于127的字符的意義與原來相同,但當(dāng)兩個(gè)大于127的字符連在一起時(shí),就表示一個(gè)漢字。就是說,對(duì)于每個(gè)字節(jié)只使用大于 127 的值用于編碼。
GB2312 共收錄 6763 個(gè)漢字,另外還收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母等在內(nèi)的 682 個(gè)字符。
GB2312 基本滿足了漢字的計(jì)算機(jī)處理需要,它覆蓋了中國(guó) 99.75% 的使用頻率。但是卻對(duì)于人名、古漢語等方面出現(xiàn)的罕用字無能為力,這導(dǎo)致了后來 GBK 及 GB 18030 漢字字符集的出現(xiàn)。
- GBK
GBK 即漢字內(nèi)碼擴(kuò)展規(guī)范,K 為漢語拼音 Kuo Zhan(擴(kuò)展)中“擴(kuò)”字的聲母。英文全稱 Chinese Internal Code Specification。
GBK 共收入 21886 個(gè)漢字和圖形符號(hào),GBK 向下與 GB 2312 完全兼容。
GBK 采用雙字節(jié)表示,總體編碼范圍為 8140-FEFE 之間,首字節(jié)在 81-FE 之間,尾字節(jié)在 40-FE 之間,剔除 XX7F 一條線。
- GB18030
全稱是:國(guó)家標(biāo)準(zhǔn) GB18030-2005,是目前中國(guó)最新的字符集,是 GB18030-2000 的修訂版。GB18030 完全兼容 GBK,共收錄漢字70244個(gè)。
與 UTF-8 相同,GB18030 采用多字節(jié)編碼,采用 1、2、4 字節(jié)變長(zhǎng)編碼。
- 單字節(jié),其值從 0 到 0x7F,與 ASCII 編碼兼容。
- 雙字節(jié),第一個(gè)字節(jié)的值從 0x81 到 0xFE,第二個(gè)字節(jié)的值從 0x40 到 0xFE(不含0x7F),以與 GBK 標(biāo)準(zhǔn)兼容。
- 四字節(jié),第一個(gè)字節(jié)的值從 0x81 到 0xFE,第二個(gè)字節(jié)的值從 0x30 到 0x39,第三個(gè)字節(jié)從0x81 到 0xFE,第四個(gè)字節(jié)從 0x30 到 0x39。
Reference
- go 語言的 漢字轉(zhuǎn)拼音 實(shí)現(xiàn):go-pinyin
- 依賴庫:pinyin-data