1. 程式人生 > >理解unicode、ascii和utf-8、utf-16

理解unicode、ascii和utf-8、utf-16

1.ASCII

       標準ASCII碼字符集總共的編碼有128個,包括32個通用控制符,10個十進位制數碼,52個英文大小寫字母和34個專用符號。這是為了方便,規定ASCII碼為正,即後7位可用,共2^7=128。

       為了納入更多的字元,用上第一位的符號位,成了”擴充套件ASCII“,又有128個,這些值都是負數。

      但是處理中文至少需要兩個位元組,所以,中國製定了GB2312編碼,用來把中文編進去。

2.unicode

      最常用的是用兩個位元組表示一個字元,如果要用到非常偏僻的字元,就需要4個位元組。

3.utf-8

      如果文字基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算。因此,又出現了把Unicode編碼轉化為“可變長編碼”的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文字包含大量英文字元,用UTF-8編碼就能節省空間。

4.記憶體中的編碼

      在計算機記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

      用記事本編輯的時候,從檔案讀取的UTF-8字元被轉換為Unicode字元到記憶體裡,編輯完成後,儲存的時候再把Unicode轉換為UTF-8儲存到檔案。

      瀏覽網頁的時候,伺服器會把動態生成的Unicode內容轉換為UTF-8再傳輸到瀏覽器。所以很多網頁的原始碼上會有類似<meta charset="UTF-8" />的資訊,表示該網頁正是用的UTF-8編碼。

5.區別

      ascii和unicode是一種編碼方式,而UTF-8,UTF-16等是一種儲存方式,在儲存和傳輸上節約空間、提高效能的一種編碼形式。

借鑑於: