首先介紹:
由于計(jì)算機(jī)是美國人發(fā)明的,因此,最早只有127個(gè)字母被編碼到計(jì)算機(jī)里,也就是大小寫英文字母、數(shù)字和一些符號,這個(gè)編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。
但是,不是所有的文字都是英文,于是各國編碼應(yīng)運(yùn)而生,oh,shit,好亂啊。因此,Unicode應(yīng)運(yùn)而生,決定一同江湖唯我獨(dú)尊。Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會(huì)再有亂碼問題。
ASCII編碼和Unicode編碼的區(qū)別:ASCII編碼是1個(gè)字節(jié),而Unicode編碼通常是2個(gè)字節(jié)(生僻字用四個(gè)字符表示)。
噔噔蹬.....
于是有人設(shè)想如果統(tǒng)一成Unicode編碼,那么亂碼問題從此消失了。But,如果你寫的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就十分不劃算。
so,本著節(jié)約的精神,誕生了把Unicode編碼轉(zhuǎn)化為“可變長編碼”的UTF-8編碼。UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié),常用的英文字母被編碼成1個(gè)字節(jié),漢字通常是3個(gè)字節(jié),只有很生僻的字符才會(huì)被編碼成4-6個(gè)字節(jié)。如果你要傳輸?shù)奈谋景罅坑⑽淖址?,用UTF-8編碼就能節(jié)省空間:
字符??? ASCII???????????????? Unicode??????????????????????????????????????????? UTF-8
A???????? 01000001????????? 00000000? 01000001????????????????? 01000001
中????????? x??????????????????????? 01001110 00101101??????????????????????? 11100100 10111000 10101101