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。英文