(转载)中文区位码、国标码、机内码、输入码、字形码
本文轉(zhuǎn)載自網(wǎng)絡(luò)。
如有侵權(quán),請(qǐng)聯(lián)系處理!
前言
980年,為了使每個(gè)漢字有一個(gè)全國統(tǒng)一的代碼,我國頒布了漢字編碼的國家標(biāo)準(zhǔn):GB2312-80《信息交換用漢字編碼字符集——基本集》,這個(gè)字符集是目前國內(nèi)所有漢字系統(tǒng)的統(tǒng)一標(biāo)準(zhǔn)。它規(guī)定了用兩個(gè)字節(jié)來表示一個(gè)漢字,每個(gè)字節(jié)都只能使用低7位,共有128*128種狀態(tài),又由于ASCII中的控制代碼在漢字系統(tǒng)中也要使用,所以只剩下94*94=8836種狀態(tài)用來表示國標(biāo)碼規(guī)定的6763個(gè)漢字和682個(gè)全角字符。每個(gè)字符都對(duì)應(yīng)了唯一的區(qū)位碼、國標(biāo)碼和機(jī)內(nèi)碼。
區(qū)位碼
為了使每一個(gè)漢字有一個(gè)全國統(tǒng)一的代碼,區(qū)位碼是國家規(guī)定的94*94的一個(gè)方陣,其中每行叫做一個(gè)區(qū),每列叫做一個(gè)位,組合起來就組成了區(qū)位碼,我們可以在相關(guān)網(wǎng)站查詢某個(gè)漢字的區(qū)位碼,例如漢字“我”的區(qū)位碼是46 50 ,標(biāo)識(shí)“我”在46區(qū),50位。區(qū)位碼不能用于通信,因?yàn)樗赡芘c通信使用的控制碼(00H~1FH)發(fā)生沖突。
國標(biāo)碼
區(qū)位碼+2020H。ASCII只用到了前7位,英文中0到32的字符都是些控制字符,第127位是del字符,即刪除字符,所以總共有34個(gè)控制字符。(從0到127)128減去(從0到32是33加上第127位的那一個(gè)字符共34)34等于94。所以可供中文使用的是94個(gè)狀態(tài)。國標(biāo)碼其實(shí)就是交換碼,是中國用來交換的,當(dāng)然交換碼是不能引起歧義的,94行94列的一個(gè)編碼再加上32就是行號(hào)從33到126列號(hào)也是從33到126。這樣就與0~32的英文控制字符沒有沖突了。為了進(jìn)行漢字通信,將區(qū)位碼的區(qū)碼和位碼都加20H,避開了控制碼,就得到了國標(biāo)碼。國標(biāo)碼用十六進(jìn)制表示,如,漢字“學(xué)”的國標(biāo)碼為5127H。
機(jī)內(nèi)碼
國標(biāo)碼+8080H。因?yàn)樵谟⑽闹兄挥?6個(gè)字母,所以用一個(gè)字節(jié)就可以表示了,用一個(gè)字節(jié)的話可以表示2^8個(gè)符號(hào),就是256個(gè)符號(hào),綽綽有余啊,于是外國人制訂了規(guī)范,規(guī)定0-127(00000000-01111111)個(gè)字符他們用了,用來表示英文字符和一些符號(hào),就是ASCII碼,但是漢字有很多,256個(gè)根本就不夠,于是國家就用兩個(gè)ASCII來表示一個(gè)漢字,就是2個(gè)字節(jié)標(biāo)識(shí)一個(gè)漢字,例如“保”的區(qū)位碼為:1703,所以國標(biāo)碼為:1703的10進(jìn)制+2020H=3123H,然而:31H 和23H在ASCII中式有值的,31H在ASCII中表示數(shù)字1,23H表示的是“#”(這個(gè)可以在網(wǎng)上查詢),那么如果我以國標(biāo)碼作為機(jī)內(nèi)碼的話,如果內(nèi)存中有兩個(gè)字節(jié)為31H和23H,那么到底是表示漢字“保”呢?還是字符1#呢?這樣就有了歧義,但是解決辦法就有了,0-127不是被英文字符占了嗎?那么我就用127之后的來表示不就可以了嗎?于是我把漢字的兩個(gè)字節(jié)每個(gè)字節(jié)機(jī)上128(16進(jìn)制就是80H),于是問題解決了,漢字“保”的機(jī)內(nèi)碼變?yōu)椋?123H+8080H=B2A3H(10進(jìn)制就是45475),打開記事本按住alt+45475看看是不是“保”,這樣就不會(huì)和英文的ASCII沖突了。
輸入碼(外碼)
輸入碼就是使用英文鍵盤輸入漢字時(shí)的編碼。目前,我國已推出的輸入碼有數(shù)百種,但用戶使用較多的約為十幾種,按輸入碼編碼的主要依據(jù),大體可分為順序碼、音碼、形碼、音形碼四類,如“保”?字,用全拼,輸入碼為碼為“BAO”,用區(qū)位碼,輸入碼為“1703”,用五筆字型則為“WKS”。
字形碼
字形碼,點(diǎn)陣代碼的一種。為了將漢字在顯示器或打印機(jī)上輸出,把漢字按圖形符號(hào)設(shè)計(jì)成點(diǎn)陣圖,就得到了相應(yīng)的點(diǎn)陣代碼(字形碼)。
用于顯示的字庫叫顯示字庫。顯示一個(gè)漢字一般采用16×16點(diǎn)陣或24×24點(diǎn)陣或48×48點(diǎn)陣。已知漢字點(diǎn)陣的大小,可以計(jì)算出存儲(chǔ)一個(gè)漢字所需占用的字節(jié)空間。
例:用16×16點(diǎn)陣表示一個(gè)漢字,就是將每個(gè)漢字用16行,每行16個(gè)點(diǎn)表示,一個(gè)點(diǎn)需要1位二進(jìn)制代碼,16個(gè)點(diǎn)需用16位二進(jìn)制代碼(即2個(gè)字節(jié)),共16行,所以需要16行×2字節(jié)/行=32字節(jié),即16×16點(diǎn)陣表示一個(gè)漢字,字形碼需用32字節(jié)。
即:字節(jié)數(shù)=點(diǎn)陣行數(shù)×(點(diǎn)陣列數(shù)/8)
用于打印的字庫叫打印字庫,其中的漢字比顯示字庫多,而且工作時(shí)也不像顯示字庫需調(diào)入內(nèi)存。
總結(jié)
以上是生活随笔為你收集整理的(转载)中文区位码、国标码、机内码、输入码、字形码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python public_【速记速学】
- 下一篇: 家庭网关怎么设置路由器天翼宽带家庭网关怎