相關知識儲備
gb2312編碼範圍:a1a1 - fefe ,其中漢字編碼範圍:b0a1-f7fe.
gb2312編碼是第乙個漢字編碼國家標準,共收錄漢字6763個,其中一級漢字3755個,二級漢字3008個。同時,gb2312編碼收錄了包括拉丁字母,希臘字母,日文平假名及片假名字母、俄語西里爾字母在內的682個全形字符。
分割槽表示
gb2312 編碼對所收錄字元進行了「分割槽」處理,共94個區,每區含有94個位,共8836個碼位。這種表示方法也稱為區位碼。
01-09區收錄除漢字外的682個字元。
10-15區位空白區,沒有使用。
16-55區收錄了3755個一級漢字,按拼音排序。
56-87區收錄了3008個二級漢字,按部首/筆畫排序。
88-94區為空白區,沒有使用。
舉例來說,「啊」字是gb2312編碼中的第乙個漢字,它位於16區的01位,所以它的區位碼就是1601
雙位元組編碼
gb2312 規定對收錄的每個字元採用兩個位元組表示,第乙個位元組為 「高位元組」,對應94個區;第二個位元組為「低位元組」,對應94個位。所以它的區位碼範圍是:0101-9494。 區號和位號分別加上0xa0 就是gb2312編碼。
例如最後乙個碼位是9494,區號和位號分別轉換成十六進製制是5e5e,0x5e+0xa0=0xfe,所以該碼位的gb2312編碼是fefe。
gb2312編碼範圍:a1a1-fefe,其中漢字的編碼範圍為b0a1-f7fe,第一位元組0xb0-0xf7(對應區號:16-87),第二個位元組0xa1-0xfe(對應位號:01-94)。
相關計算
區位碼、國標碼與機內碼的轉換關係方法:
(1)區位碼先轉換成十六進製制數表示
(2)區位碼的十六進製制表示)+2020h=國標碼;
(3)國標碼+8080h=機內碼
舉例:以漢字「大」為例,「大」字的區內碼為2083
1、區號為20,位號為83
2、將區位號2083轉換為十六進製制表示為1453h
3、1453h+2020h=3473h,得到國標碼3473h
4、3473h+8080h=b4f3h,得到機內碼為b4f3h
php**實現
<?php//國標碼與區位碼轉換常量
$gb_sp_diff = 160;
//存放國標一級漢字不同讀音的起始 區位碼
$secposvaluelist = array(1601, 1637, 1833, 2078,2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 5600);
//存放國標一級漢字不同讀音的起始區位碼對應讀音
$firstletter = array('a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'w', 'x', 'y', 'z');
echo
$string.'
';
$string=iconv( "utf-8", "gb2312//ignore" , $string
);
$result = array
();
//十進位制
for($i=0;$i
} //將區位碼轉對應的讀音
$str='';
for($i=0;$i
echo '首字母:'.$str
;
//二分查詢
function getletter($arr,$val,$hight,$low
)elseif($arr[$mid] > $val
)else
}return -1;
}?>
執行結果:
怎樣獲取中文字串的首字母?
public classchineseletter 存放國標一級漢字不同讀音的起始區位碼對應讀音 private static final charfirstletter 獲取乙個字串的拼音碼 public staticstring getfirstletter string oristr byte...
ORACLE獲取中文字串拼音首字母
oracle漢字轉拼音 獲得全拼 拼音首字母 拼音擷取等 效果如下 oracle 字符集 gbk 沒有問題 utf 8 需要修改一下 sql oracle漢字轉拼音 package 1.獲得全拼 www.2cto.com select gethzpy.gethzfullpy 漢字 from dual...
asp獲取中文首字母
asp獲取中文字串拼音首字母串 str 呼叫演示 中文字串 的拼音首字母串abc123是 response.write str response.write getpy str 獲取中文字串拼音首字母串的函式 function getpy str for i 1 to len str getpy g...