- Ascii碼(American Standard Code for Information Interchange,美國信息互換標准代碼):
最初計算機只在美國使用時,只用8位的字節來組合出256(2的8次方)種不同的狀態,把所有的空格、標點符號、數字、大小寫字母分別用連續的字節狀態表示,一直編到了第127號, - 拓展字符集:世界各地的都開始使用計算機,一直把序號編到了最后一個狀態255。從128到255這一頁的字符集被稱"擴展字符集"。
- GB2312:
GB2312 是對 ASCII 的中文擴展。當計算機傳入中國后,規定:一個小於127的字符的意義與原來相同,但兩個大於127的字符連在一起時,就表示一個漢字,前面的一個字節(他稱之為高字節)從0xA1用到0xF7,后面一個字節(低字節)從0xA1到0xFE,這樣我們就可以組合出大約7000多個簡體漢字了。這種方案叫做GB2312。 - GBK:
后來GB2312方案的漢字不夠用了,干脆不再要求低字節一定是127號之后的內碼,只要第一個字節是大於127就固定表示這是一個漢字的開始,不管后面跟的是不是擴展字符集里的內容。擴展之后的編碼方案被稱為 GBK 標准,GBK 包括了 GB2312 的所有內容,同時又增加了近20000個新的漢字(包括繁體字)和符號。 - GB18030:
后來又加入了加入了幾千個少數民族的字,拓展成為GB18030 - UNICODE:但全世界各種編碼方式無法通行,於是出現了一種無視各種地區編碼的世界統一的編碼方式~Unicode。在Unicode中,一個字符就是兩個字節。規定必須用兩個字節,也就是16位來統一表示所有的字符,對於ascii里的那些“半角”字符,UNICODE 包持其原編碼不變,只是將其長度由原來的8位擴展為16位,而其他文化和語言的字符則全部重新統一編碼。
- UTF-8:
前面介紹的都是字符集,而UTF-8,UTF-16則是一種編碼規則。因為Unicode字符集都是用兩個字節來存儲的,所以在傳輸信息的過程中對資源浪費很大,就像原來Ascii碼中的字符只需要一個字節來傳遞。於是出現了UTF-8這種變長的編碼規則。
因此UTF-8是基於Unicode的一種編碼規則,因此現在最常用的便是UTF-8編碼方式。
補充一點:
1.將字符轉換為字節的方式稱為編碼
2.將字節轉換為字符的方式稱為解碼
接下來介紹用pycharm來寫爬蟲時遇到的亂碼問題:
首先打開file中的setting 再找到Editor中的File Encodings
將其中的GlobalEncoding和Project Encoding改為UTF-8即可。
為了以防萬一,也可以將文件的編碼方式也改為utf-8
pycharm右下角可以更改文件的編碼方式 或者在setting中將文件編碼改為utf-8