字符編碼 因爲計算機只識別0和1,爲了使計算機可以支持文字和字母等符號,方便實用操做計算機 因而字符編碼應運而生,旨在解決符號和人類語言與計算機0和1創建起一種對應關係 聽說不理解字符編碼多是程序員一生的遺憾,拿出來單獨總結一下 發展史: ASCII-->Unicode-->UTF-8 ASCII是最先期應用在美國方面的,創建了A-z和一批特殊符號,一共128種字符與二進制之間的對應關係 好比:小寫字母w 十進制135 轉換爲二進制 10000111 空格 0 0 若是表示[空格][空格]w 二進制就是 0010000111 #前面的兩個0表明兩個空格 就有個問題就是二進制原本就一串繁瑣空格和w怎麼話分界線來界定每一個字符的界限呢,以至後來就統一了一下全部字符都佔8位,每次以8位界限讀取 若是表示[空格][空格]w 二進制就是 00000000 00000000 10000111 ##這裏每1或0佔1bit(比特) 因而乎就有了今天的ASCII碼每一個字符佔1bytes(字節) 換算關係: bit 位,計算機中最小的表示單位,每一個字符轉二進制後的0和1 8bit = 1bytes(B) 字節,最小的存儲單位,1bytes縮寫爲1B 1KB = 1024B 1MB = 1024KB 1GB = 1024MB ... 優勢:創建了對應關係 缺點:並不適用其餘國家語言,其餘語言解析會出現亂碼,好比中文,韓文等等... GBK 爲了同時知足中文和英文(ASCII),中國人定製了GBK,也就是說這個時候中文和英文使用GBK沒問題,若是寫日文其餘語言就會產生亂碼 GBK:2Bytes表明一箇中文字符,1Bytes表示一個英文字符 其餘國家知足本身,各個國家紛紛定製了本身的編碼 日本把日文編到Shift_JIS裏,韓國把韓文編到Euc-kr裏 Unicode 旨在解決其餘國家語言共存的問題而應運而生,俗稱萬國編碼,僅創建在內存中 因爲ASCII 用的是 8位也就是說 最多支持 11111111 轉換成十進制255個編碼 中文恐怕就遠遠不夠了,中文有幾萬個,後來對於中文就在原來1字節(11111111)基礎又加了1個字節 ASCII 英文 11111111 最高支持255個字符 佔用1字節 Unicode 支持中文 11111111 11111111 100W+ 佔用2-4字節 Unicode爲了同時兼容8位的ASCII,在原來ASCII的8位基礎上統一添加00000000實現了 2個bytes 之因此說unicode是定長是由於全部的字符都是佔用2bytes 這就是unicode(定長), 統一用2Bytes表明一個字符, 雖然2**16-1=65535, 但unicode卻能夠存放100w+個字符,由於unicode存放了與其餘編碼的映射關係,準確地說unicode並非一種嚴格意義上的字符編碼表 UTF-8 很明顯對於通篇都是英文的文原本說,unicode的式無疑是多了一倍的存儲空間(二進制最終都是以電或者磁的方式存儲到存儲介質中的) 因而產生了UTF-8(可變長,全稱Unicode Transformation Format),對英文字符只用1Bytes表示,對中文字符用3Bytes,對其餘 生僻字用更多的Bytes去存。因而如今你們也都在推行UTF-8的緣由之一 整個發展歷程: ASCII --> GBK --> Unicode --> UTF-8 使用過程: 基於目前的現狀,內存中的編碼固定就是unicode,咱們惟一可變的就是硬盤的上對應的字符編碼。 此時你可能會以爲,那若是咱們之後開發軟時統一都用unicode編碼,那麼不就都統一了嗎,關於統一這一點你的思路是沒錯的,但咱們不可會使用 unicode編碼來編寫程序的文件,由於在通篇都是英文的狀況下,耗費的空間幾乎會多出一倍,這樣在軟件讀入內存或寫入磁盤時,都會徒增IO次數, 從而下降程序的執行效率。於是咱們之後在編寫程序的文件時應該統一使用一個更爲精準的字符編碼utf-8(用1Bytes存英文,3Bytes存中文), 再次強調,內存中的編碼固定使用unicode。 一、在存入磁盤時,須要將unicode轉成一種更爲精準的格式,utf-8:全稱Unicode Transformation Format,將數據量控制到最精簡 二、在讀入內存時,須要將utf-8轉成unicode 因此咱們須要明確:內存中用unicode是爲了兼容萬國軟件,即使是硬盤中有各國編碼編寫的軟件,unicode也有相對應的映射關係,但在如今的開 發中,程序員廣泛使用utf-8編碼了,估計在未來的某一天等全部老的軟件都淘汰掉了狀況下,就能夠變成:內存utf-8<->硬盤utf-8的形式了。
參考:http://www.cnblogs.com/linhaifeng/articles/5950339.html
更多圖文並茂請點超連接html