-
Ascii碼(American Standard Code for Information Interchange,美國(guó)信息互換標(biāo)準(zhǔn)代碼):
最初計(jì)算機(jī)只在美國(guó)使用時(shí)困鸥,只用8位的字節(jié)來(lái)組合出256(2的8次方)種不同的狀態(tài),把所有的空格姐帚、標(biāo)點(diǎn)符號(hào)衷旅、數(shù)字、大小寫(xiě)字母分別用連續(xù)的字節(jié)狀態(tài)表示课锌,一直編到了第127號(hào)厨内, - 拓展字符集:世界各地的都開(kāi)始使用計(jì)算機(jī),一直把序號(hào)編到了最后一個(gè)狀態(tài)255渺贤。從128到255這一頁(yè)的字符集被稱(chēng)"擴(kuò)展字符集"雏胃。
-
GB2312:
GB2312 是對(duì) ASCII 的中文擴(kuò)展。當(dāng)計(jì)算機(jī)傳入中國(guó)后癣亚,規(guī)定:一個(gè)小于127的字符的意義與原來(lái)相同丑掺,但兩個(gè)大于127的字符連在一起時(shí),就表示一個(gè)漢字述雾,前面的一個(gè)字節(jié)(他稱(chēng)之為高字節(jié))從0xA1用到0xF7街州,后面一個(gè)字節(jié)(低字節(jié))從0xA1到0xFE,這樣我們就可以組合出大約7000多個(gè)簡(jiǎn)體漢字了玻孟。這種方案叫做GB2312唆缴。 -
GBK:
后來(lái)GB2312方案的漢字不夠用了,干脆不再要求低字節(jié)一定是127號(hào)之后的內(nèi)碼黍翎,只要第一個(gè)字節(jié)是大于127就固定表示這是一個(gè)漢字的開(kāi)始面徽,不管后面跟的是不是擴(kuò)展字符集里的內(nèi)容。擴(kuò)展之后的編碼方案被稱(chēng)為 GBK 標(biāo)準(zhǔn)匣掸,GBK 包括了 GB2312 的所有內(nèi)容趟紊,同時(shí)又增加了近20000個(gè)新的漢字(包括繁體字)和符號(hào)。 -
GB18030:
后來(lái)又加入了加入了幾千個(gè)少數(shù)民族的字碰酝,拓展成為GB18030 - UNICODE:但全世界各種編碼方式無(wú)法通行霎匈,于是出現(xiàn)了一種無(wú)視各種地區(qū)編碼的世界統(tǒng)一的編碼方式~Unicode。在Unicode中送爸,一個(gè)字符就是兩個(gè)字節(jié)铛嘱。規(guī)定必須用兩個(gè)字節(jié)暖释,也就是16位來(lái)統(tǒng)一表示所有的字符,對(duì)于ascii里的那些“半角”字符墨吓,UNICODE 包持其原編碼不變球匕,只是將其長(zhǎng)度由原來(lái)的8位擴(kuò)展為16位,而其他文化和語(yǔ)言的字符則全部重新統(tǒng)一編碼帖烘。
-
UTF-8:
前面介紹的都是字符集亮曹,而UTF-8,UTF-16則是一種編碼規(guī)則。因?yàn)閁nicode字符集都是用兩個(gè)字節(jié)來(lái)存儲(chǔ)的蚓让,所以在傳輸信息的過(guò)程中對(duì)資源浪費(fèi)很大乾忱,就像原來(lái)Ascii碼中的字符只需要一個(gè)字節(jié)來(lái)傳遞。于是出現(xiàn)了UTF-8這種變長(zhǎng)的編碼規(guī)則历极。
因此UTF-8是基于Unicode的一種編碼規(guī)則窄瘟,因此現(xiàn)在最常用的便是UTF-8編碼方式。
補(bǔ)充一點(diǎn):
1.將字符轉(zhuǎn)換為字節(jié)的方式稱(chēng)為編碼
2.將字節(jié)轉(zhuǎn)換為字符的方式稱(chēng)為解碼
接下來(lái)介紹用pycharm來(lái)寫(xiě)爬蟲(chóng)時(shí)遇到的亂碼問(wèn)題:
首先打開(kāi)file中的setting
再找到Editor中的File Encodings
將其中的GlobalEncoding和Project Encoding改為UTF-8即可趟卸。
為了以防萬(wàn)一蹄葱,也可以將文件的編碼方式也改為utf-8
pycharm右下角可以更改文件的編碼方式
或者在setting中將文件編碼改為utf-8