擴展知識:
byte(字節):計算機中基本的存儲單元
bit(比特):計算機中最小的存儲單位
1byte=8bit
字:計算機進行數據處理時,一次存取、加工和傳送的數據長度稱為字(word),一個字通常由一個或者多個字節構成。
16位計算機:一個字長就是16位,兩個字節。
32位計算機:一個字長度是32位,四個字節。
瞭解:ASCII碼
- 在計算機內部,所有數據都使用二進制表示。每一個二進制位(bit)有0和1兩種狀態,因此8個二進制位就可以組合出256種狀態,這被稱為一個字節(byte)。一個字節一共可以用來表示256種不同的狀態,每一個狀態對應一個符號,就是256個符號,從0000000到11111111。
- ASCII碼:上個世紀60年代,美國製定了一套字符編碼,對英語字符與二進制位之間的關係,做了統一規定。這被稱為ASCII碼。ASCIIl碼一共規定了128個字符的編碼,比如空格“SPACE"是32(二進制00100000),大寫的字母A是65(二進制01000001)。這128個符號(包括32個不能打印出來的控制符號),只佔用了一個字節的後面7位,最前面的1位統一規定為0。
-
ASCII的缺點:
- 不能表示所有字符。
- 相同的編碼表示的字符不一樣:比如,130在法語編碼中代表了é,在希伯來語編碼中卻代表了字母Gimel (:)
瞭解: Unicode編碼
- 亂碼:世界上存在着多種編碼方式,同一個二進制數字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼。
- Unicode:一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨無二的編碼,使用Unicode沒有亂碼的問題。
- Unicode 的缺點:Unicode只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲:無法區別Unicode 和ASCII:計算機無法區分三個字節表示一個符號還是分別表示三個符號。另外,我們知道,英文字母只用一個字節表示就夠了,如果unicode統一規定,每個符號用三個或四個字節表示,那麼每個英文字母前都必然有二到三個字節是0,這對於存儲空間來説是極大的浪費。這時我們就需要一個對Unicode編碼的實現。
瞭解:UTF-8
- UTF-8是在互聯網上使用最廣的一種 Unicode 的實現方式。
- UTF-8是一種變長的編碼方式。它可以使用1-6個字節表示一個符號,根據不同的符號而變化字節長度。
-
UTF-8的編碼規則:
- 對於單字節的UTF-8編碼,該字節的最高位為0,其餘7位用來對字符進行編碼(等同於ASCIl碼)。
- 對於多字節的UTF-8編碼,如果編碼包含n個字節,那麼第一個字節的前n位為1,第1個字節的第n+1位為0,該字節的剩餘各位用來對字符進行編碼。在第一個字節之後的所有的字節,都是最高兩位為"10",其餘6位用來對字符進行編碼。
瞭解:GBK
GBK: 專門用來解決中文編碼,雙字節。
是在國家標準GB2312基礎上擴容後兼容GB2312標準。
包含全部中文字符。
UTF-8: 解決國際上制度的一種多字節編碼,對英文使用8位(1個字節),中文使用24位(3個字節)來編碼。
對於英文字符較多的論壇適用於UTF-8節省空間。
包含全世界所有國家需要用到的字符。
簡言而知,GBK編碼方式的編碼是以中國國情而創造的,在國際上的兼容性不好,這也是為什麼大多數的網頁是使用UTF-8編碼而不是GBK。