總結陳述:ASCII碼是用來表示英語字符的編碼。只用1個字節(8位)。所以總共有256種可能。雖然實際而言只規定了128種,但是其每個字符的表示依然需要1個字節。而且,最高位永遠為0.
UTF-8是Unicode碼的優化方案中采用得較為廣泛的方案。Unicode設計的動機:世界上存在著多種編碼方式,同一個二進制數字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼。可以想象,如果有一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨一無二的編碼,那么亂碼問題就會消失。這就是Unicode,就像它的名字都表示的,這是一種所有符號的編碼。
Unicode的好處是顯而易見的,但是壞處便是需要很多位去表示一個字符(總共有million級別的可能),然而很多時候,是不需要那么多位的。它的提出代表一種方案,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲。UTF-8就是在互聯網上使用最廣的一種Unicode的實現方式。其他實現方式還包括UTF-16(字符用兩個字節或四個字節表示)和UTF-32(字符用四個字節表示),不過在互聯網上基本不用。重復一遍,這里的關系是,UTF-8是Unicode的實現方式之一。
UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。UTF-8的編碼規則很簡單,只有二條:1)對于單字節的符號,字節的第一位設為0,后面7位為這個符號的unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的。2)對于n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,后面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。
參考鏈接:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
新聞熱點
疑難解答