GB 2312中對所收漢字進(jìn)行了“分區(qū)”處理,每區(qū)含有94個漢字/符號。這種透露表現(xiàn)體例也稱為區(qū)位碼。
1)01-09區(qū)為特殊符號。
2)16-55區(qū)為一級漢字,按拼音排序。
3)56-87區(qū)為二級漢字,按部首/筆畫排序。
4)10-15區(qū)及88-94區(qū)則未有編碼。
在使用GB2312的程序中,通常采用EUC儲存方法,以便兼容于ASCII。瀏覽器編碼表上的“GB2312”,通常都是指“EUC-CN”透露表現(xiàn)法。
每個漢字及符號以兩個字節(jié)來透露表現(xiàn)。個字節(jié)稱為“高位字節(jié)”(也稱“區(qū)字節(jié))”,第二個字節(jié)稱為“低位字節(jié)”(也稱“位字節(jié)”)。
“高位字節(jié)”使用了0xA1-0xF7(把01-87區(qū)的區(qū)號加上0xA0),“低位字節(jié)”使用了0xA1-0xFE(把01-94加上 0xA0)。因?yàn)橐患墲h字從16區(qū)肇端,漢字區(qū)的“高位字節(jié)”的范圍是0xB0-0xF7,“低位字節(jié)”的范圍是0xA1-0xFE,占用的碼位是 72*94=6768。其中有5個空位是D7FA-D7FE。
例如“啊”字在大多數(shù)程序中,會以兩個字節(jié),0xB0(個字節(jié)) 0xA1(第二個字節(jié))儲存。區(qū)位碼=區(qū)字節(jié)+位字節(jié)(與區(qū)位碼對比:0xB0=0xA0+16,0xA1=0xA0+1)。
設(shè)計(jì):
用一個數(shù)組存放國標(biāo)一級漢字不同讀音的肇端區(qū)位碼 :如
static final int[] secPosValueList = {
1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472,
3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 9999};
一個數(shù)據(jù)存放存放國標(biāo)一級漢字不同讀音的肇端區(qū)位碼對應(yīng)讀音
static final char[] firstLetter = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'w', 'x', 'y', 'z'};
處理方法:
1. 判斷是否為英文之母
2. 假如是,直接返回英文之母
3. 取字符的編碼值
4. 比較判斷其編碼值在碼表中的位置。
5. 根據(jù)位置值,返回之母表中響應(yīng)值