簡介
每個漢字有個二進制編碼,叫漢字國标碼。
在我國漢字代碼标準GB2312-80中有6763個常用漢字規定了二進制編碼。
每個漢字使用2個字節。
GB2312-80GB2312将代碼表分為94個區,對應第一字節;每個區94個位,對應第二字節,兩個字節的值分别為區号值和位号值加32(20H),因此也稱為區位碼。01-09區為符号、數字區,16-87區為漢字區,10-15區、88-94區是有待進一步标準化的空白區。GB2312将收錄的漢字分成兩級:第一級是常用漢字計3755個,置于16-55區,按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字計3008個,置于56-87區,按部首/筆畫順序排列。故而GB2312最多能表示6763個漢字。
輸入碼、區位碼、國标碼與機内碼
1980年,為了使每個漢字有一個全國統一的代碼,我國頒布了漢字編碼的國家标準:GB2312-80《信息交換用漢字編碼字符集》基本集,這個字符集是我國中文信息處理技術的發展基礎,也是目前國内所有漢字系統的統一标準。國标碼是一個四位十六進制數,區位碼是一個四位的十進制數,每個國标碼或區位碼都對應着一個唯一的漢字或符号,但因為十六進制數我們很少用到,所以大家常用的是區位碼,它的前兩位叫做區碼,後兩位叫做位碼。
輸入碼、區位碼、國标碼與機内碼,這些字對每一位computerfan來說,可能都不陌生,但其中的聯系與區别,可能就不那麼清楚了,(筆者作為一名中專電腦教師,經常遇到同學問類似的問題),下面就這問題講述一下,以飨讀者。
我們知道,鍵盤是當前微機的主要輸入設備,輸入碼就是使用英文鍵盤輸入漢字時的編碼。目前,我國已推出的輸入碼有數百種,但用戶使用較多的約為十幾種,按輸入碼編碼的主要依據,大體可分為順序碼、音碼、形碼、音形碼四類,如“保”字,用全拼,輸入碼為碼為“BAO”,用區位碼,輸入碼為“1703”,用五筆字型則為“WKS”。
計算機隻識别由0、1組成的代碼,ASCII碼是英文信息處理的标準編碼,漢字信息處理也必須有一個統一的标準編碼。我國國家标準局于1981年5月頒布了《信息交換用漢字編碼字符集——基本集》,代号為GB2312-80,共對6763個漢字和682個圖形字符進行了編碼,其編碼原則為:漢字用兩個字節表示,每個字節用七位碼(高位為0),;國家标準将漢字和圖形符号排列在一個94行94列的二維代碼表中,;每兩個字節分别用兩位十進制編碼,前字節的編碼稱為區碼,後字節的編碼稱為位碼,此即區位碼,如“保”字在二維代碼表中處于17區第3位,區位碼即為“1703”。
國标碼并不等于區位碼,它是由區位碼稍作轉換得到,其轉換方法為:先将十進制區碼和位碼轉換為十六進制的區碼和位碼,;這樣就得了一個與國标碼有一個相對位置差的代碼,;再将這個代碼的第一個字節和第二個字節分别加上20H,就得到國标碼。如:“保”字的國标碼為3123H,它是經過下面的轉換得到的:1703D->1103H->+20H->3123H。國标碼是漢字信息交換的标準編碼,但因其前後字節的最高位為0,與ASCII碼發生沖突,如“保”?字,國标碼為31H和23H,而西文字符“1”和“#”的ASCII也為31H和23H,現假如内存中有兩個字節為31H和23H,這到底是一個漢字?,還是兩個西文字符“1”和“#”于是就出現了二義性,顯然,國标碼是不可能在計算機内部直接采用的,于是,漢字的機内碼采用變形國标碼,其變換方法為:将國标碼的每個字節都加上128,即将兩個字節的最高位由0改1,其餘7位不變,如:由上面我們知道,“保”字的國标碼為3123H,前字節為00110001B,後字節為00100011B,高位改1為10110001B和10100011B即為B1A3H,因此,漢字的機内碼就是B1A3H。
顯然,漢字機内碼的每個字節都大于128,這就解決了與西文字符的ASCII碼沖突的問題。如上所述,漢字輸入碼、區位碼、國标碼與機内碼都是漢字的編碼形式,它們之間有着千絲萬縷的聯系,但其間的區别也是不容忽視的。



















