字符串的編碼
- 計(jì)算機(jī)只能處理數(shù)字,文本轉(zhuǎn)換為數(shù)字才能處理。計(jì)算機(jī)中的8bit就是一個(gè)字節(jié),所以一個(gè)字節(jié)能表示最大的數(shù)字就是255.
- 計(jì)算機(jī)是美國(guó)人發(fā)明的,所以一個(gè)字節(jié)可以表示所有的字符,所以ASCII(一個(gè)字節(jié))編碼成為了美國(guó)人的標(biāo)準(zhǔn)編碼。
- 中文里面的字符遠(yuǎn)大于255,所以ASCII編碼處理中文是不夠的,所以中國(guó)制定了GB2312編碼,用兩個(gè)字節(jié)表示一個(gè)漢字。同理,其他國(guó)家為了解決這個(gè)問題,就發(fā)展了很多標(biāo)準(zhǔn),如果出現(xiàn)多種語(yǔ)言混合就會(huì)出現(xiàn)亂碼。
- Unicode將所有語(yǔ)言統(tǒng)一到一套標(biāo)準(zhǔn)編碼里面。
- 但是,如果內(nèi)容都是英文,Unicode編碼比ASCII編碼多一倍的存儲(chǔ)空間。
- 所以出現(xiàn)了可變長(zhǎng)的編碼“UTF-8”,把英文變長(zhǎng)為一個(gè)字節(jié),中文變?yōu)?個(gè)字節(jié),特別生僻的變?yōu)?-6個(gè)字節(jié),如果傳輸大量英文,UTF-8對(duì)比Unicode的優(yōu)勢(shì)就很明顯了
在進(jìn)行代碼處理的時(shí)候,固定長(zhǎng)度的Unicode編碼處理起來(lái)比可變長(zhǎng)度的UTF-8更加方便簡(jiǎn)單,UTF-8的優(yōu)勢(shì)在于文本的存儲(chǔ)和傳送。
在Python3.x中,所有字符串已經(jīng)轉(zhuǎn)換為Unicode編碼。
在Python2.x中,需要將字符串decode為Unicode后才能進(jìn)行encode。