在上篇博文(java中文亂碼解決之道(一)-----認識字符集)中,LZ簡單介紹了主流的字符編碼,對各類編碼都是點到爲止,如下LZ將詳細闡述字符集、字符編碼等基礎知識和ASCII、GB的詳情。html
在瞭解各類字符集以前咱們須要瞭解一些最基礎的知識,如:編碼、字符、字符集、字符編碼基礎知識。java
計算機中存儲的信息都是用二進制表示的,咱們在屏幕上所看到文字、圖片等都是經過二進制轉換的結果。編碼是信息從一種形式或格式轉換爲另外一種形式的過程,通俗點講就是就是將咱們看到的文字、圖片等信息按照某種規則存儲在計算機中,例如‘c’在計算機中怎麼表達,‘陳’在計算機中怎麼表達,這個過程就稱之爲編碼。解碼是編碼的逆過程,它是將存儲在計算機的二進制轉換爲咱們能夠看到的文字、圖片等信息,它體現的是視覺上的刺激。編碼
n位二進制數能夠組合成2的n次方個不一樣的信息,給每一個信息規定一個具體碼組,這種過程也叫編碼。加密
在編碼和解碼中,他們就如加密、解密通常,他們必定會遵循某個規則,即y = f(x),那麼x = f(y);不然在解密過程就會致使‘a’解析成‘b’或者亂碼。設計
字符是可以使用多種不一樣字符方案或代碼頁來表示的抽象實體,它是一個單位的字形、類字形單位或符號的基本信息,也是各類文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。code
字符是指計算機中使用的字母、數字、字和符號,包括:一、二、三、A、B、C、~!·#¥%……—*()——+等等。在 ASCII 編碼中,一個英文字母字符存儲須要1個字節。在 GB 2312 編碼或 GBK 編碼中,一個漢字字符存儲須要2個字節。在UTF-8編碼中,一個英文字母字符存儲須要1個字節,一個漢字字符儲存須要3到4個字節。在UTF-16編碼中,一個英文字母字符或一個漢字字符存儲都須要2個字節(Unicode擴展區的一些漢字存儲須要4個字節)。在UTF-32編碼中,世界上任何字符的存儲都須要4個字節。orm
字符是各類文字和符號的總稱,而字符集則是多個字符的集合,字符集種類較多,每一個字符集包含的字符個數不一樣。而計算機要準確的處理各類字符集文字,須要進行字符編碼,以便計算機可以識別和存儲各類文字。htm
常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。blog
計算機中的信息包括數據信息和控制信息,然而不論是那種信息,他們都是以二進制編碼的方式存入計算機中,可是他們是怎麼展現在屏幕上的呢?同時在展示過程當中如何才能保證他們不出錯?這個時候字符編碼就起到了重要做用!字符編碼是一套規則,一套創建在符合集合與數字系統之間的對應關係之上的規則,它是信息處理的基本技術。圖片
使用字符編碼這套規則可以對天然語言的字符的一個集合(如字母表或音節表),與其餘東西的一個集合(如號碼或電脈衝)進行配對。
ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套電腦編碼系統。它主要用於顯示現代英語和其餘西歐英語,它是現今最通用的單字節編碼系統。
ASCII使用7位或者8位來表示128或者256種可能的字符。標準的ASCII碼則是使用7位二進制數來表示全部的大小寫字母、數字、標點符合和一些控制字符,其中:
0~3一、127(共33個)是控制字符或者通訊專用字符,如控制符:LF(換行)、CR(回車)、DEL(刪除)等;通訊專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等。ASCII值爲八、九、十、13分別表示退格、製表、換號、回車字符。
32~126(共95個)字符,32爲空格、48~57爲阿拉伯數字、65~90爲大寫字母、97~122爲小寫字母,其他爲一些標點符號和運算符號!
前面提過標準的ASCII碼是使用七位來表示字符的,而最高位(b7)則是用做奇偶校驗的。所謂奇偶校驗,是指在代碼傳送過程當中用來檢驗是否出現錯誤的一種方法,通常分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。 (參考百度百科)
下面是ASCII字符對照表,更多詳情請關注:》》 ASCII碼錶 《《
標準的ASCII是用七位來表示的,那麼它的缺陷就很是明顯了:只能顯示26個基本拉丁字母、阿拉伯數目字和英式標點符號,基本上只能應用於現代美國英語,對於其餘國家,128個字符確定不夠。因而,這些歐洲國家決定利用字節中閒置的最高位編入新的符號,這樣一來,能夠表達的字符數最多就爲256個,可是隨着產生的問題也就來了:不一樣的國家有不一樣的字母,可能同一個編碼在不一樣的國家所表示的字符不一樣。可是無論怎麼樣,在這些編碼中0~127所表示的字符確定是同樣的,不同的也只是128~255這一段。
8位的ASCII在歐洲國家表現的不盡人意,那麼在其餘國家就更加不用說了,咱們擁有五千年曆史文化的中華名族所包含的漢字多大10多萬,不知道是多少個256。因此一個字節8位表示的256個字符確定是不夠的,那麼兩個字節呢?可可以了吧!咱們常見的漢字就是用兩個字節表示的,如GB2312。
對於歐美國家來講,ASCII可以很好的知足用戶的需求,可是當咱們中華名族使用計算機時,ASCII明顯就不知足需求了,有5000年曆史文化的咱們,擁有的漢字達到將近10萬,因此爲了顯示中文,咱們必須設計一套編碼規則用於將漢字轉換爲計算機能夠接受的數字系統的數。顯示中文的經常使用字符編碼有:GB23十二、GBK、GB18030。
GB2312,中國國家標準簡體中文字符集,全稱《信息交換用漢字編碼字符集·基本集》,由中國國家標準總局發佈,1981年5月1日實施。
GB2312編碼的規則:一個小於127的字符的意義與原來相同,但兩個大於127的字符連在一塊兒時,就表示一個漢字,前面的一個字節(他稱之爲高字節)從0xA1用到 0xF7,後面一個字節(低字節)從0xA1到0xFE,這樣咱們就能夠組合出大約7000多個簡體漢字了。在這些編碼裏,還把數學符號、羅馬希臘的 字母、日文的假名們都編進去了,連在ASCII裏原本就有的數字、標點、字母都通通從新編了兩個字節長的編碼,這就是常說的"全角"字符,而原來在127 號如下的那些就叫"半角"字符了。
在GB2312中,GB2312共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個,還收錄了拉丁字母、希臘字母、日文等682個全角字符。因爲GB2312的出現,它基本上解決了咱們平常的須要,它所收錄的漢子已經覆蓋了中國大陸99.75%的使用平率。可是我國文化博大精深,對於人名、古漢語等方面出現的罕用字,GB2312仍是不能處理,因而後面的GBK和GB18030漢字字符集出現了。
GB2312字符集庫很是龐大,詳情:GB2312簡體中文編碼表。
GBK,全稱《漢字內碼擴展規範》,由中華人民共和國全國信息技術標準化技術委員會1995年12月1日製訂,也是漢字編碼的標準之一。
GBK是GB2312的擴展,他向下與GB2312兼容,,向上支持 ISO 10646.1 國際標準,是前者向後者過渡過程當中的一個承上啓下的標準。同時它是使用雙字節編碼方案,其編碼範圍從8140至FEFE(剔除xx7F),首字節在 81-FE 之間,尾字節在 40-FE 之間,共23940個碼位,共收錄了21003個漢字。
GB18030,國家標準GB18030《信息技術 中文編碼字符集》,是我國計算機系統必須遵循的基礎性標準之一。它有兩個版本:GB18030-2000、GB18030-2005。其中GB18030-2000僅規定了經常使用非漢字符號和27533個漢字(包括部首、部件等)的編碼,而GB18030-2005是全文強制性標準,市場上銷售的產品必須符合,它是GB18030-2000的基礎上增長了42711個漢字和多種我國少數民族文字的編碼。
GB18030標準採用單字節、雙字節和四字節三種方式對字符編碼。(碼位整體結構見下圖)
單字節部分採用GB/T 11383的編碼結構與規則,使用0×00至0×7F碼位(對應於ASCII碼的相應碼位)。雙字節部分,首字節碼位從0×81至0×FE,尾字節碼位分別是0×40至0×7E和0×80至0×FE。四字節部分採用GB/T 11383未採用的0×30到0×39做爲對雙字節編碼擴充的後綴,這樣擴充的四字節編碼,其範圍爲0×81308130到0×FE39FE39。其中第1、三個字節編碼碼位均爲0×81至0×FE,第2、四個字節編碼碼位均爲0×30至0×39。
編碼: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
-----原文出自:http://cmsblogs.com/?p=1412請尊重做者辛勤勞動成果,轉載說明出處.
-----我的站點:http://cmsblogs.com