1. 程式人生 > >ASCII, Unicode和UTF-8

ASCII, Unicode和UTF-8

  1. ASCII
    英文字符集的編碼方式:對應一個位元組(8位),共可以表示256個字元,而英文字符集只需要128位,因此第一位是0。
  2. Unicode
    在ASCII編碼之後,其他國家語言的字符集也需要對應的編碼來表示,於是一時間出現了多種編碼方式,在一段時間內出現了同一個二進位制數在不同的語言中代表不同的字元的現象,因此網際網路上的檔案用不同的編碼方式開啟顯示的是不同的文字,這時就迫切的需要一個超集出現來涵蓋世界上所有語言中的字元,於是Unicode出現了。
    Unicode中一個二進位制數代表唯一一個字元。
  3. UTF-8
    Unicode是一個很大的集合,目前可以表示100多萬個字元。那麼到底該如何對這些二進位制數進行儲存呢,於是出現了UTF-8, UTF-16,UTF-32等多種編碼方式,其中網際網路上使用最廣泛的一種就是UTF-8編碼方式,這是一種變長的編碼方式。
    UTF-8編碼方式也很簡單,分為兩種情況:
  • 用1個位元組表示英文字符集,第一位統一為0;
  • 對於n位元組的符號(n > 1),第一個位元組的前n位都設為1,第n + 1位設為0,後面位元組的前兩位一律設為10。剩下的沒有提及的二進位制位,全部為這個符號的 Unicode 碼。(詳見阮一峰的文章

而中文字元大約是10萬個左右,而2個位元組最多僅可以表示65536個字元,因此中文的UTF-8碼一般是2~3個位元組。

總結:ASCII, Unicode和UTF-8三者之間的關係是UTF-8碼包含ASCII碼,而UTF-8這種編碼方式只是Unicode二進位制數字符集的一種編碼方式而已。

參考:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html