日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

ASCII/GB2312/GBK/unicode常用字符集編碼詳解

ASCII/GB2312/GBK/unicode等常用字符集編碼詳解

ASCII/GB2312/GBK/unicode常用字符集編碼詳解


ASCII
ASCII碼是7位編碼 , 編碼范圍是0x00-0x7F 。ASCII字符集包括英文字母、阿拉伯?dāng)?shù)字和標(biāo)點(diǎn)符號(hào)等字符 。其中0x00-0x20和0x7F共33個(gè)控制字符 。
只支持ASCII碼的系統(tǒng)會(huì)忽略每個(gè)字節(jié)的高到位 , 只認(rèn)為低7位是有效位 。HZ字符編碼就是早期為了在只支持7位ASCII系統(tǒng)中傳輸中文而設(shè)計(jì)的編碼 。早期很多郵件系統(tǒng)也只支持ASCII編碼 , 為了傳輸中文郵件必須使用BASE64或者其他編碼方式 。
GB2312
GB2312是基于區(qū)位碼設(shè)計(jì)的 , 區(qū)位碼把編碼表分為94個(gè)區(qū) , 每個(gè)區(qū)對(duì)應(yīng)94個(gè)位 , 每個(gè)字符的區(qū)號(hào)和位號(hào)組合起來(lái)就是該漢字的區(qū)位碼 。區(qū)位碼一般 用10進(jìn)制數(shù)來(lái)表示 , 如1601就表示16區(qū)1位 , 對(duì)應(yīng)的字符是“啊” 。在區(qū)位碼的區(qū)號(hào)和位號(hào)上分別加上0xA0就得到了GB2312編碼 。
區(qū)位碼中01-09區(qū)是符號(hào)、數(shù)字區(qū) , 16-87區(qū)是漢字區(qū) , 10-15和88-94是未定義的空白區(qū) 。它將收錄的漢字分成兩級(jí):第一級(jí)是常用漢字計(jì)3755個(gè) , 置于16-55區(qū) , 按漢語(yǔ)拼音字母/筆形順序排列;第二級(jí)漢字是次常用漢字計(jì)3008個(gè) , 置于56-87區(qū) , 按部首/筆畫(huà)順序排列 。一級(jí)漢字是按照拼音排序的 , 這個(gè)就可以得到某個(gè)拼音在一級(jí)漢字區(qū)位中的范圍 , 很多根據(jù)漢字可以得到拼音的程序就是根據(jù)這個(gè)原理編寫的 。
GB2312字符集中除常用簡(jiǎn)體漢字字符外還包括希臘字母、日文平假名及片假名字母、俄語(yǔ)西里爾字母等字符 , 未收錄繁體中文漢字和一些生僻字 ??梢杂梅斌w漢字測(cè)試某些系統(tǒng)是不是只支持GB2312編碼 。
GB2312的編碼范圍是0xA1A1-0x7E7E , 去掉未定義的區(qū)域之后可以理解為實(shí)際編碼范圍是0xA1A1-0xF7FE 。
EUC-CN可以理解為GB2312的別名 , 和GB2312完全相同 。
區(qū)位碼更應(yīng)該認(rèn)為是字符集的定義 , 定義了所收錄的字符和字符位置 , 而GB2312及EUC-CN是實(shí)際計(jì)算機(jī)環(huán)境中支持這種字符集的編碼 。HZ和ISO-2022-CN是對(duì)應(yīng)區(qū)位碼字符集的另外兩種編碼 , 都是用7位編碼空間來(lái)支持漢字 。區(qū)位碼和GB2312編碼的關(guān)系有點(diǎn)像 Unicode和UTF-8 。
GBK
GBK編碼是GB2312編碼的超集 , 向下完全兼容GB2312 , 同時(shí)GBK收錄了Unicode基本多文種平面中的所有CJK漢字 。同 GB2312一樣 , GBK也支持希臘字母、日文假名字母、俄語(yǔ)字母等字符 , 但不支持韓語(yǔ)中的表音字符(非漢字字符) 。GBK還收錄了GB2312不包含的漢字部首符號(hào)、豎排標(biāo)點(diǎn)符號(hào)等字符 。
GBK的整體編碼范圍是為0x8140-0xFEFE , 不包括低字節(jié)是0×7F的組合 。高字節(jié)范圍是0×81-0xFE , 低字節(jié)范圍是0x40-7E和0x80-0xFE 。
低字節(jié)是0x40-0x7E的GBK字符有一定特殊性 , 因?yàn)檫@些字符占用了ASCII碼的位置 , 這樣會(huì)給一些系統(tǒng)帶來(lái)麻煩 。
有些系統(tǒng)中用0x40-0x7E中的字符(如“|”)做特殊符號(hào) , 在定位這些符號(hào)時(shí)又沒(méi)有判斷這些符號(hào)是不是屬于某個(gè) GBK字符的低字節(jié) , 這樣就會(huì)造成錯(cuò)誤判斷 。在支持GB2312的環(huán)境下就不存在這個(gè)問(wèn)題 。需要注意的是支持GBK的環(huán)境中小于0x80的某個(gè)字節(jié)未必就是ASCII符號(hào);另外就是較好選用小于0×40的ASCII符號(hào)做一些特殊符號(hào) , 這樣就可以快速定位 , 且不用擔(dān)心是某個(gè)漢字的另一半 。Big5編碼中也存在相應(yīng)問(wèn)題 。
CP936和GBK的有些許差別 , 絕大多數(shù)情況下可以把CP936當(dāng)作GBK的別名 。
GB18030
GB18030編碼向下兼容GBK和GB2312 , 兼容的含義是不僅字符兼容 , 而且相同字符的編碼也相同 。GB18030收錄了所有Unicode3.1中的字符 , 包括中國(guó)少數(shù)民族字符 , GBK不支持的韓文字符等等 , 也可以說(shuō)是世界大多民族的文字符號(hào)都被收錄在內(nèi) 。

推薦閱讀