一、爲什麼要有編碼?
因爲計算機只能處理數字,所以如果想要處理字符串就需要把字符串先轉成數字。這個轉換就需要有一個字符到數字的映射表,也就是編碼。
二、什麼是ASIIC碼?
因爲計算機是美國人發明和最早使用的,他們爲了解決計算機處理字符串的問題,就將數字字母和一些常用的符號做成了一套編碼,這個編碼就是ASIIC碼。ASIIC碼包括數字大小寫字母和常用符號,一共128個,1字節(byte)=8bit,8bit能表示的最大數是256,所以ASIIC編碼中一個字符的大小就是1個字節
三、什麼是Unicode編碼?
計算機進入中國,我們發現美國人制定的ASIIC完全不夠用,於是我們就制定了自己的GB2312編碼,把漢字編碼了進去。
同樣的事情發生了在了俄羅斯,法國,日本等等,各國都開始制定自己的一套編碼,計算機的編碼越來越龐大,越來越亂,爲了解決這一問題,Unicode應運而生。Unicode將各國文字統一編碼。
所以Unicode編碼可以看做是ASIIC的擴展。
四、什麼是UTF-8?
UTF-8編碼可以理解成Unicode編碼的一種升級,爲什麼要升級呢?爲了節省存儲空間。
ASIIC編碼一共128個,所以1個字節就可以搞定,Unicode編碼通常是2個字節。
例如:A的表示
ASIIC | 01000001 |
Unicode | 00000000 01000001 |
可以想象,如果是純英文的文章用Unicode編碼,會浪費很多字節的存儲空間。爲了解決這個問題,就把Unicode編碼升級成了可變長度的編碼也就是UTF-8編碼,在UTF-8編碼中,數字字母都是一個字節,超過ASIIC碼的部分用兩個或者三個字節表示。舉例:
字符 A 用三種編碼存儲:
Asiic | 01000001 |
Unicode | 00000000 01000001 |
UTF-8 | 01000001 |