1.計算機只能處理數(shù)字涮毫,文本轉(zhuǎn)換為數(shù)字才能處理翘魄。計算機中8個bit作為一個字節(jié),所以一個字節(jié)能表示最大的數(shù)字就是255。
2.計算機是美國人發(fā)明的谋币,所以一個字節(jié)可以表示所有字符了仗扬,ASCII(一個字節(jié))編碼就成為了美國人的標(biāo)準(zhǔn)編碼。
3.但ASCII處理中文明顯是不夠的蕾额,中文不止255個漢字早芭,所以中國定制了GB2312編碼,用兩個字節(jié)表示一個漢字诅蝶。GB2312還把ASCII包含進去了退个,同理,日文秤涩、韓文等上百個國家為了解決這個問題都發(fā)展了一套自己的編碼帜乞,標(biāo)準(zhǔn)越來越多,如果出現(xiàn)多種語言混合顯示就一定會出現(xiàn)亂碼筐眷。
4.于是Unicode就出現(xiàn)了黎烈,Unicode將所有編碼統(tǒng)一到一套編碼里。(兩個字節(jié))
5.亂碼問題解決了匀谣,但如果內(nèi)容全是英文照棋,Unicode編碼比ASCII編碼需要多一倍的存儲空間,同時如果傳輸需要多一倍左右的的傳輸時間武翎。
6.然后“utf-8"出現(xiàn)了烈炭,它是一套可變長的編碼,把英文變成一個字節(jié)宝恶,漢字3個字節(jié)符隙,特別生僻的變成4-6字節(jié),如果傳輸大量的英文垫毙,utf-8作用就很明顯了蒸播。
7.decode的作用是把其他編碼轉(zhuǎn)換成Unicode編碼祠够,encode的作用是把Unicode編碼轉(zhuǎn)換成自己想要它成為的編碼掘譬。Windows下默認(rèn)編碼格式是GB2312反砌,s.decode("gb2312").encode("utf-8)的意思是:將字符串s由GB2312轉(zhuǎn)換為Unicode,然后再轉(zhuǎn)換成utf-8編碼膀藐。linux下默認(rèn)編碼格式是utf-8屠阻,這里說的默認(rèn)編碼是在該系統(tǒng)下,輸入的字符串是該編碼额各。