字符集:字符集規定了某個文字對應的二進制數字存放方式(編碼)和某串二進制數值代表了哪個文字(解碼)的轉換關系。計算機可以輸出打印的是實體化的文字,但是在計算機存儲中存放的是二進制的bit流,如何把這兩者之間做準確的互相轉換就需要一個標準,字符集就規定了這個標準。
字符編碼:字符集只是一個規則集合的名字,要正確編碼轉碼一個字符需要3個元素:字庫表(保存所有可顯示的字符),編碼字符集(用一個編碼值表示一個字符在字庫中的位置),字符編碼(把編碼字符集和實際存儲數值之間的轉換關系),栗子:在ASCll中A在表中排65,所以A編碼后的數值01000001等于十進制的65轉換成二進制的結果。
utf-8:UTF-8編碼為變長編碼。最小編碼單位是一個字節。一個字節的前1-3個bit為描述性部分,后面為實際序號部分。
如果一個字節的第一位為0,那么代表當前字符為單字節字符,占用一個字節的空間。0之后的所有部分(7個bit)代表在Unicode中的序號。
如果一個字節以110開頭,那么代表當前字符為雙字節字符,占用2個字節的空間。110之后的所有部分(7個bit)代表在Unicode中的序號。且第二個字節以10開頭
如果一個字節以1110開頭,那么代表當前字符為三字節字符,占用2個字節的空間。110之后的所有部分(7個bit)代表在Unicode中的序號。且第二、第三個字節以10開頭
如果一個字節以10開頭,那么代表當前字節為多字節字符的第二個字節。10之后的所有部分(6個bit)代表在Unicode中的序號。
uncode和utf-8的關系:Unicode就是編碼字符集,而UTF-8就是字符編碼,即Unicode字庫的一種實現形式。