在上篇博文(java中文亂碼解決之道(一)—–認(rèn)識字符集)中具帮,LZ簡單介紹了主流的字符編碼避咆,對各種編碼都是點到為止镶骗,以下LZ將詳細(xì)闡述字符集、字符編碼等基礎(chǔ)知識和ASCII、GB的詳情喊巍。
一屠缭、基礎(chǔ)知識
在了解各種字符集之前我們需要了解一些最基礎(chǔ)的知識,如:編碼崭参、字符呵曹、字符集、字符編碼基礎(chǔ)知識何暮。
編碼
計算機(jī)中存儲的信息都是用二進(jìn)制表示的奄喂,我們在屏幕上所看到文字、圖片等都是通過二進(jìn)制轉(zhuǎn)換的結(jié)果海洼。編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程跨新,通俗點講就是就是將我們看到的文字、圖片等信息按照某種規(guī)則存儲在計算機(jī)中贰军,例如‘c’在計算機(jī)中怎么表達(dá)玻蝌,‘陳’在計算機(jī)中怎么表達(dá),這個過程就稱之為編碼词疼。解碼是編碼的逆過程,它是將存儲在計算機(jī)的二進(jìn)制轉(zhuǎn)換為我們可以看到的文字帘腹、圖片等信息贰盗,它體現(xiàn)的是視覺上的刺激。
n位二進(jìn)制數(shù)可以組合成2的n次方個不同的信息阳欲,給每個信息規(guī)定一個具體碼組舵盈,這種過程也叫編碼。
在編碼和解碼中球化,他們就如加密秽晚、解密一般,他們一定會遵循某個規(guī)則筒愚,即y = f(x)赴蝇,那么x = f(y);否則在解密過程就會導(dǎo)致‘a(chǎn)’解析成‘b’或者亂碼巢掺。
字符
字符是可使用多種不同字符方案或代碼頁來表示的抽象實體句伶,它是一個單位的字形、類字形單位或符號的基本信息陆淀,也是各種文字和符號的總稱考余,包括各國家文字、標(biāo)點符號轧苫、圖形符號楚堤、數(shù)字等。
字符是指計算機(jī)中使用的字母、數(shù)字身冬、字和符號衅胀,包括:1、2吏恭、3拗小、A、B樱哼、C哀九、~!·#¥%……—()——+等等搅幅。在 ASCII 編碼中阅束,一個英文字母字符存儲需要1個字節(jié)。在 GB 2312 編碼或 GBK 編碼中茄唐,一個漢字字符存儲需要2個字節(jié)息裸。在UTF-8編碼中,一個英文字母字符存儲需要1個字節(jié)沪编,一個漢字字符儲存需要3到4個字節(jié)呼盆。在UTF-16編碼中,一個英文字母字符或一個漢字字符存儲都需要2個字節(jié)(Unicode擴(kuò)展區(qū)的一些漢字存儲需要4個字節(jié))蚁廓。在UTF-32編碼中访圃,世界上任何字符的存儲都需要4個字節(jié)。
[圖片上傳中相嵌。腿时。。(1)]
字符集
字符是各種文字和符號的總稱饭宾,而字符集則是多個字符的集合批糟,字符集種類較多,每個字符集包含的字符個數(shù)不同看铆。而計算機(jī)要準(zhǔn)確的處理各種字符集文字徽鼎,需要進(jìn)行字符編碼,以便計算機(jī)能夠識別和存儲各種文字性湿。
常見字符集名稱:ASCII字符集纬傲、GB2312字符集、BIG5字符集肤频、 GB18030字符集叹括、Unicode字符集等。
字符編碼
計算機(jī)中的信息包括數(shù)據(jù)信息和控制信息宵荒,然而不管是那種信息汁雷,他們都是以二進(jìn)制編碼的方式存入計算機(jī)中净嘀,但是他們是怎么展示在屏幕上的呢?同時在展現(xiàn)過程中如何才能保證他們不出錯侠讯?這個時候字符編碼就起到了重要作用挖藏!字符編碼是一套規(guī)則,一套建立在符合集合與數(shù)字系統(tǒng)之間的對應(yīng)關(guān)系之上的規(guī)則厢漩,它是信息處理的基本技術(shù)膜眠。
使用字符編碼這套規(guī)則能夠?qū)ψ匀徽Z言的字符的一個集合(如字母表或音節(jié)表),與其他東西的一個集合(如號碼或電脈沖)進(jìn)行配對溜嗜。
[圖片上傳中宵膨。。炸宵。(2)]
二辟躏、ASCII
2.1、標(biāo)準(zhǔn)ASCII碼
ASCII(American Standard Code for Information Interchange土全,美國信息交換標(biāo)準(zhǔn)代碼)是基于拉丁字母的一套電腦編碼系統(tǒng)捎琐。它主要用于顯示現(xiàn)代英語和其他西歐英語,它是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng)裹匙。
ASCII使用7位或者8位來表示128或者256種可能的字符瑞凑。標(biāo)準(zhǔn)的ASCII碼則是使用7位二進(jìn)制數(shù)來表示所有的大小寫字母、數(shù)字概页、標(biāo)點符合和一些控制字符拨黔,其中:
0~31、127(共33個)是控制字符或者通信專用字符绰沥,如控制符:LF(換行)、CR(回車)贺待、DEL(刪除)等徽曲;通信專用字符:SOH(文頭)、EOT(文尾)麸塞、ACK(確認(rèn))等秃臣。ASCII值為8、9哪工、10奥此、13分別表示退格、制表雁比、換號稚虎、回車字符。
32126(共95個)字符偎捎,32為空格蠢终、4857為阿拉伯?dāng)?shù)字序攘、6590為大寫字母、97122為小寫字母寻拂,其余為一些標(biāo)點符號和運(yùn)算符號程奠!
前面提過標(biāo)準(zhǔn)的ASCII碼是使用七位來表示字符的,而最高位(b7)則是用作奇偶校驗的祭钉。所謂奇偶校驗瞄沙,是指在代碼傳送過程中用來檢驗是否出現(xiàn)錯誤的一種方法,一般分奇校驗和偶校驗兩種慌核。奇校驗規(guī)定:正確的代碼一個字節(jié)中1的個數(shù)必須是奇數(shù)距境,若非奇數(shù),則在最高位b7添1遂铡;偶校驗規(guī)定:正確的代碼一個字節(jié)中1的個數(shù)必須是偶數(shù)肮疗,若非偶數(shù),則在最高位b7添1扒接。 (參考百度百科)
下面是ASCII字符對照表伪货,更多詳情請關(guān)注:》》 ASCII碼表 《《
[圖片上傳中。钾怔。碱呼。(3)]
[圖片上傳中。宗侦。愚臀。(4)]
2.2、擴(kuò)展ASCII碼
標(biāo)準(zhǔn)的ASCII是用七位來表示的矾利,那么它的缺陷就非常明顯了:只能顯示26個基本拉丁字母姑裂、阿拉伯?dāng)?shù)目字和英式標(biāo)點符號,基本上只能應(yīng)用于現(xiàn)代美國英語男旗,對于其他國家舶斧,128個字符肯定不夠。于是察皇,這些歐洲國家決定利用字節(jié)中閑置的最高位編入新的符號茴厉,這樣一來,可以表達(dá)的字符數(shù)最多就為256個什荣,但是隨著產(chǎn)生的問題也就來了:不同的國家有不同的字母矾缓,可能同一個編碼在不同的國家所表示的字符不同。但是不管怎么樣稻爬,在這些編碼中0127所表示的字符肯定是一樣的嗜闻,不一樣的也只是128255這一段。
8位的ASCII在歐洲國家表現(xiàn)的不盡人意因篇,那么在其他國家就更加不用說了泞辐,我們擁有五千年歷史文化的中華名族所包含的漢字多大10多萬笔横,不知道是多少個256。所以一個字節(jié)8位表示的256個字符肯定是不夠的咐吼,那么兩個字節(jié)呢吹缔?可能夠了吧!我們常見的漢字就是用兩個字節(jié)表示的锯茄,如GB2312厢塘。
[圖片上傳中。肌幽。晚碾。(5)]
三、GB*
對于歐美國家來說喂急,ASCII能夠很好的滿足用戶的需求格嘁,但是當(dāng)我們中華名族使用計算機(jī)時,ASCII明顯就不滿足需求了廊移,有5000年歷史文化的我們糕簿,擁有的漢字達(dá)到將近10萬,所以為了顯示中文狡孔,我們必須設(shè)計一套編碼規(guī)則用于將漢字轉(zhuǎn)換為計算機(jī)可以接受的數(shù)字系統(tǒng)的數(shù)懂诗。顯示中文的常用字符編碼有:GB2312、GBK苗膝、GB18030殃恒。
GB2312
GB2312,中國國家標(biāo)準(zhǔn)簡體中文字符集辱揭,全稱《信息交換用漢字編碼字符集·基本集》离唐,由中國國家標(biāo)準(zhǔn)總局發(fā)布,1981年5月1日實施问窃。
GB2312編碼的規(guī)則:一個小于127的字符的意義與原來相同侯繁,但兩個大于127的字符連在一起時,就表示一個漢字泡躯,前面的一個字節(jié)(他稱之為高字節(jié))從0xA1用到 0xF7,后面一個字節(jié)(低字節(jié))從0xA1到0xFE丽焊,這樣我們就可以組合出大約7000多個簡體漢字了较剃。在這些編碼里,還把數(shù)學(xué)符號技健、羅馬希臘的 字母写穴、日文的假名們都編進(jìn)去了,連在ASCII里本來就有的數(shù)字雌贱、標(biāo)點啊送、字母都統(tǒng)統(tǒng)重新編了兩個字節(jié)長的編碼偿短,這就是常說的”全角”字符,而原來在127 號以下的那些就叫”半角”字符了馋没。
在GB2312中昔逗,GB2312共收錄6763個漢字,其中一級漢字3755個篷朵,二級漢字3008個勾怒,還收錄了拉丁字母、希臘字母声旺、日文等682個全角字符笔链。由于GB2312的出現(xiàn)腮猖,它基本上解決了我們?nèi)粘5男枰珍浀臐h子已經(jīng)覆蓋了中國大陸99.75%的使用平率澈缺。但是我國文化博大精深,對于人名谍椅、古漢語等方面出現(xiàn)的罕用字误堡,GB2312還是不能處理雏吭,于是后面的GBK和GB18030漢字字符集出現(xiàn)了。
GB2312字符集庫非常龐大杖们,詳情:GB2312簡體中文編碼表。
GBK
GBK摘完,全稱《漢字內(nèi)碼擴(kuò)展規(guī)范》姥饰,由中華人民共和國全國信息技術(shù)標(biāo)準(zhǔn)化技術(shù)委員會1995年12月1日制訂,也是漢字編碼的標(biāo)準(zhǔn)之一孝治。
GBK是GB2312的擴(kuò)展列粪,他向下與GB2312兼容,谈飒,向上支持 ISO 10646.1 國際標(biāo)準(zhǔn)岂座,是前者向后者過渡過程中的一個承上啟下的標(biāo)準(zhǔn)。同時它是使用雙字節(jié)編碼方案杭措,其編碼范圍從8140至FEFE(剔除xx7F)费什,首字節(jié)在 81-FE 之間,尾字節(jié)在 40-FE 之間手素,共23940個碼位鸳址,共收錄了21003個漢字瘩蚪。
GB18030
GB18030,國家標(biāo)準(zhǔn)GB18030《信息技術(shù) 中文編碼字符集》稿黍,是我國計算機(jī)系統(tǒng)必須遵循的基礎(chǔ)性標(biāo)準(zhǔn)之一疹瘦。它有兩個版本:GB18030-2000、GB18030-2005闻察。其中GB18030-2000僅規(guī)定了常用非漢字符號和27533個漢字(包括部首拱礁、部件等)的編碼,而GB18030-2005是全文強(qiáng)制性標(biāo)準(zhǔn)辕漂,市場上銷售的產(chǎn)品必須符合呢灶,它是GB18030-2000的基礎(chǔ)上增加了42711個漢字和多種我國少數(shù)民族文字的編碼。
GB18030標(biāo)準(zhǔn)采用單字節(jié)钉嘹、雙字節(jié)和四字節(jié)三種方式對字符編碼鸯乃。(碼位總體結(jié)構(gòu)見下圖)
單字節(jié)部分采用GB/T 11383的編碼結(jié)構(gòu)與規(guī)則,使用0×00至0×7F碼位(對應(yīng)于ASCII碼的相應(yīng)碼位)跋涣。雙字節(jié)部分缨睡,首字節(jié)碼位從0×81至0×FE,尾字節(jié)碼位分別是0×40至0×7E和0×80至0×FE陈辱。四字節(jié)部分采用GB/T 11383未采用的0×30到0×39作為對雙字節(jié)編碼擴(kuò)充的后綴奖年,這樣擴(kuò)充的四字節(jié)編碼,其范圍為0×81308130到0×FE39FE39沛贪。其中第一陋守、三個字節(jié)編碼碼位均為0×81至0×FE,第二利赋、四個字節(jié)編碼碼位均為0×30至0×39水评。
[圖片上傳中。媚送。中燥。(6)]
四、參考文獻(xiàn)&進(jìn)一步閱讀
編碼:http://baike.baidu.com/subview/237708/11062012.htm(百度百科)
字符:http://baike.baidu.com/view/263416.htm(百度百科)
字符集:http://baike.baidu.com/view/51987.htm(百度百科)
字符編碼:http://baike.baidu.com/view/1204863.htm(百度百科)
字符集和字符編碼:http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html(吳秦)
ASCII:http://baike.baidu.com/view/15482.htm
GB2312:http://baike.baidu.com/view/443268.htm
GBK:http://baike.baidu.com/view/931619.htm
GB18030:http://baike.baidu.com/view/889058.htm
java中文亂碼解決之道(2):字符編碼詳解:基礎(chǔ)知識 + ASCII + GB**
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門已骇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來褪储,“玉大人,你說我怎么就攤上這事鲤竹∥袅瘢” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵吱肌,是天一觀的道長氮墨。 經(jīng)常有香客問我,道長勇边,這世上最難降的妖魔是什么折联? 我笑而不...
- 正文 為了忘掉前任诚镰,我火速辦了婚禮,結(jié)果婚禮上月杉,老公的妹妹穿的比我還像新娘。我一直安慰自己苛萎,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布蛙酪。 她就那樣靜靜地躺著桂塞,像睡著了一般馍驯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汰瘫,一...
- 文/蒼蘭香墨 我猛地睜開眼市怎,長吁一口氣:“原來是場噩夢啊……” “哼辛慰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驰弄,我...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡忆某,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 年R本政府宣布拗慨,位于F島的核電站,受9級特大地震影響赵抢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烦却,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望短绸。 院中可真熱鬧,春花似錦醋闭、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽瑞眼。三九已至棵逊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辆影,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Java編碼中的中文問題是一個老生常談的問題了犁功,每次遇到中文亂碼LZ要么是按照以前的經(jīng)驗修改,要么則是baidu....
- 2017/7/23 我怎么如此的幸運(yùn)呢署鸡? 1.我怎么如此的幸運(yùn)呢限嫌,中午了,到廚房怒医,開始幫張老師準(zhǔn)備食材…又一頓大...