UTF-8 and Unicode cannot be compared. UTF-8 is an encoding used to translate binary data into numbers. Unicode is a character set used to translate numbers into characters.code
最最開始的世界,只有英文字母,因此ascii就足夠了,一個byte足以表示全部英文字母ci
而後人們忽然意識到,窩草,那別的國家的文字咋辦。因而就開始有各類charset。好比說big5,就是專精繁體中文的charset。這種charset用2個byte表示了全部中文繁體字以及一些基本的英文字符。你能夠理解成這是一個巨大的map。2個byte所表示的值做爲key。但遇到韓國字日本字的時候,他就沒法找到對應的字符,或者說對應到一些奇怪的字符上去。由於這個charset原本就不是給韓文日語準備的。unicode
終於人們受夠了各類各樣的charset。開發出了unicode。一個超級巨大的表格,用4個byte能夠表示全部的字符,各個國家的都能涵蓋進去。開發
即UTF32,即用32個bit表示各類千奇百怪的字符it
然而,若是我只想寫英文字符,那每一個字符我明明能用1個byte搞定,爲啥非要用4個,這樣豈不是浪費不少空間,文件大小也會變大不少。sed
因此有了UTF8coding
UTF8頗有意思,若是是0-127,即ASCII能搞定的英文字母,那他就是一個byte搞定,byte最左邊那位是0,後面7位表示ascii的0-127map
若是在ascii以外,意味着他須要多個byte,那麼他的第一個byte就負責告訴你他一共須要多少個byte(包括這個byte)。好比說我要寫個奇怪的不知道是哪一個國家的複雜字符,可能須要4個byte。開頭第一個byte就是11110000,後面三個byte用來表示這個字符在unicode的那個巨大表格里的key。英文