字符編碼、單字節字符編碼、雙字節字符編碼、多字節字符編碼

1、基礎知識

計算機中儲存的信息都是用二進制數表示的,用8位二進制來表示一個字節,這樣一個字節就可以表示2的8次方(256)個字符,這樣所有的英文字母,標點符號等就都可以被表示出來了,這就是最初的ASCII碼,事實上ASCII碼只用了127位。

字符集(Charset):是一個系統支持的所有抽象字符的集合。字符是各種文字和符號的總稱,包括各國家文字、標點符號、圖形符號、數字等。

字符編碼(Character Encoding):是一套法則,使用該法則能夠對自然語言的字符的一個集合(如字母表),與其他東西的一個集合(如二進制字節碼)進行配對。即在符號集合與數字系統之間建立對應關係,它是信息處理的一項基本技術。通常人們用符號集合(一般情況下就是文字)來表達信息。而以計算機爲基礎的信息處理系統則是利用元件(硬件)不同狀態的組合來存儲和處理信息的。元件不同狀態的組合能代表數字系統的數字,因此字符編碼就是將符號轉換爲計算機可以接受的數字系統的數,稱爲數字代碼。

單字節編碼:一個字節就表示一個字符,比如典型的ASCII碼中的所有字符都是單字節編碼的

雙字節編碼:需要用兩個字節來表示一個字符的編碼,比如漢字的GBK,GB2312編碼

多字節編碼:需要用多個字節來表示一個字符的編碼,比如Unicode,UTF-8編碼

2、常用字符集和字符編碼

常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、GBK字符集、Unicode字符集等。計算機要準確的處理各種字符集文字,需要進行字符編碼,以便計算機能夠識別和存儲各種文字。

ASCII字符集:主要包括控制字符(回車鍵、退格、換行鍵等);可顯示字符(英文大小寫字符、阿拉伯數字和西文符號),單字節編碼字符集。

ASCII編碼:將ASCII字符集轉換爲計算機可以接受的數字系統的數的規則。使用7位(bits)表示一個字符,共128字符;但是7位編碼的字符集只能支持128個字符,爲了表示更多的歐洲常用字符對ASCII進行了擴展,ASCII擴展字符集使用8位(bits)表示一個字符,共256字符。ASCII字符集映射到數字編碼規則。

GB2312字符集:用兩個大於127的字符連在一起時,就表示一個漢字,前面的一個字節(他稱之爲高字節)從0xA1用到 0xF7,後面一個字節(低字節)從0xA1到0xFE,這樣我們就可以組合出大約7000多個簡體漢字了。在這些編碼裏,還把數學符號、羅馬希臘的字母、日文的假名們都編進去了,連在ASCII裏本來就有的數字、標點、字母都統統重新編了兩個字節長的編碼,這就是常說的"全角"字符,而原來在127號以下的那些就叫"半角"字符了。

GBK字符集:由於GB2312還是不夠用,後來乾脆不再要求低字節一定是127號之後的內碼,只要第一個字節是大於127就固定表示這是一個漢字的開始,不管後面跟的是不是擴展字符集裏的內容。結果擴展之後的編碼方案被稱爲 GBK 標準,GBK 包括了 GB2312 的所有內容,同時又增加了近20000個新的漢字(包括繁體字)和符號等。

GBK、GB2312編碼:是將兩個字節連在一起表示一個字符,這兩個字節分別叫高字節和低字節,GBK的編碼中只要高字節代表的字符大於127就表示該字符爲漢字,GB2312編碼中必須兩個字節所標識的字符都大於127才標識這個字符爲漢字。

Unicode字符集:Unicode 是基於通用字符集,它是用4個字節來表示一個字符,所以能把目前世界上所有的語言文字字符都表示出來。

Unicode字符編碼:UTF-32/ UTF-16/ UTF-8是三種字符編碼方案都屬於Unicode字符編碼,由於Unicode字符編碼用4個字節表示一個字符會浪費很多空間,所以UTF-8編碼採用一種變長編碼規則,如一個英文字母a,只需要一個字節就可以,那麼UTF-8編碼中a還用一個字節,有些字符需要4個字節才能表示出來,就用4個字節來表示。注意在UTF-8編碼中漢字是需要3個字節來表示的。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章