字符集GB2312的理解

2021-06-12 20:24:52 字數 2035 閱讀 8023

在電腦程式中,通常都有涉及到gbk,gb2312編碼方式的問題。常見的是網頁開啟是亂碼啊,api之間傳輸的是亂碼字元啊等等。

我們都知道,在電腦程式中,所有的資訊都是以01來表示的,之所以編碼是人類需要和計算機溝通。例如,人類要將乙個漢字如「啊」儲存在計算機中,如果採用gb2312編碼儲存的話,「啊」的b0a1.

gb2312標準共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個;同時收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內的682個字元。

在gb2312中,對所收物件進行了「分割槽」處理,每區含有94個物件。這種表示方式也稱為區位碼。

01-09區為特殊符號。

16-55區為一級漢字,按拼音排序。

56-87區為二級漢字,按部首/筆畫排序。

10-15區及88-94區則未有編碼。

也可以將gb2312編碼表理解成乙個**,它就有94行94列,一共8836個格仔。

01-09行,收錄的是特殊符號

16-55行為一級漢字,按拼音排序。

56-87行為二級漢字,按部首/筆畫排序。

10-15行及88-94行則未有編碼。

其中,「啊」字是gb2312之中的第乙個漢字,它的區位碼就是1601。

使用gb2312作為字符集的電腦程式通常採用euc儲存方法,以便相容於ascii。

這些漢字及符號均以兩個位元組來表示。第乙個位元組稱為「高位位元組」,第二個位元組稱為「低位位元組」。「高位位元組」使用了0xa1-0xf7(把01-87區的區號加上0xa0),「低位位元組」使用了0xa1-0xfe(把01-94加上0xa0)。

因為一級漢字從16區起始,所以漢字區的「高位位元組」的範圍是0xb0-0xf7,「低位位元組」的範圍是0xa1-0xfe,占用的碼位是72*94=6768。

但是,這6768個區位碼中,有5個是空位,分別是d7fa、d7fb、d7fc、d7fd、d7fe。

再以「啊」字舉例,在大多數電腦程式中,它都會以兩個位元組,0xb0(第乙個位元組)0xa1(第二個位元組)儲存。(與區位碼對比:0xb0=0xa0+16,0xa1=0xa0+1,就是1601)。

sql> select chr(f_hex2dec('b0a1')) from dual;

chr(f_hex2dec('b0a1'))

----------------------

啊根據這些規則,我們將這些字元統統列印出來看一下。

declare

v_offset number;

begin

v_offset := f_hex2dec('a0');

for qu in 16 .. 55 loop

for wei in 1 .. 94 loop

if (qu = 16) then

dbms_output.put_line(qu || ':' || wei || '=' ||

chr(f_hex2dec(f_dec2hex(qu + v_offset) ||

f_dec2hex(wei + v_offset))));

end if;

end loop;

end loop;

end;

declare

v_offset number;

begin

v_offset := f_hex2dec('a0');

for qu in 56 .. 87 loop

for wei in 1 .. 94 loop

if (qu = 87) then

dbms_output.put_line(qu || ':' || wei || '=' ||

chr(f_hex2dec(f_dec2hex(qu + v_offset) ||

f_dec2hex(wei + v_offset))));

end if;

end loop;

end loop;

end;

通過對字符集的理解,可以利用這些特點來開發出更加高效的電腦程式,也有助於理解一下轉碼操作。如應用程式儲存時,有時候會出現漢字變亂碼的現象。反正我是有些理解了,所以才總結下來。

GB2312字符集顯示

最近需要做一下12 12點陣的gbk字符集,但是網上只找到了gb2312的字符集一大堆說法,陷身於網上的大海洋中,看了一下資料,有點明白漢字在螢幕上如何顯示了 比如顯示 漢字 兩個字,因為漢字是兩個位元組顯示的,比如ab兩個位元組,第乙個位元組是高位元組,第二個位元組是低位元組,在gb2312中,字...

安裝GB2312字符集

linux下安裝gb2312的示例 step 1 到linux字符集的安裝包目錄下 cd usr share i18n charmaps step 2 解壓該目錄下的gb2312.gz gunzip gb2312.gz step 3 安裝字符集 localedef f gb2312 i zh cn ...

GB2312的編碼規則

gb2312標準共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個 同時,gb2312收錄了包括拉丁字母 希臘字母 日文平假名及片假名字母 俄羅斯語西里爾字母在內的682個全形字符。gb2312的出現,基本滿足了漢字的計算機處理需要,它所收錄的漢字已經覆蓋99.75 的使用頻率。gb2...