有關於UTF-8 & Unicode編碼問題
由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機裡,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。
但是當引入中文或者其他語言的時候127的字元編碼就不夠用了,所以,中國製定了GB2312編碼,用來把中文編進去。
你可以想得到的是,全世界有上百種語言,日本把日文編到Shift_JIS裡,韓國把韓文編到Euc-kr裡,各國有各國的標準,就會不可避免地出現衝突,結果就是,在多語言混合的文字中,顯示出來會有亂碼。
也正因為這些原因,Unicode應運而生。Unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。
Unicode標準也在不斷髮展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式語言都直接支援Unicode。
現在,捋一捋ASCII編碼和Unicode編碼的區別:ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組。
那麼問題又來了:如果統一成Unicode編碼,雖然消除了亂碼的問題,但是如果寫的文字都是英文,就會造成儲存空間的浪費,對於當時緊缺的記憶體空間,這是一件很消耗效能的事情。
所以,本著節約的精神,又出現了把Unicode編碼轉化為“可變長編碼”的UTF-8編碼(8-bit Unicode Transformation Format
小結:在計算機記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。
還有一個我的觀點:UTF-8就是unicode一種壓縮機制,通過一種最優二叉樹的演算法把unicode編碼檔案壓縮到最小,而後通過UTF-8儲存或者傳輸已達到儲存最大化和傳輸效率最大化。