1:先說python2
py2裡預設編碼是ascii
檔案開頭那個編碼宣告是告訴解釋這個程式碼的程式 以什麼編碼格式 把這段程式碼讀入到記憶體,因為到了記憶體裡,這段程式碼其實是以bytes二進位制格式存的,不過即使是2進位制流,也可以按不同的編碼格式轉成2進位制流,你懂麼?
如果在檔案頭宣告瞭#_*_coding:utf-8*_,就可以寫中文了, 不宣告的話,python在處理這段程式碼時按ascii,顯然會出錯, 加了這個宣告後,裡面的程式碼就全是utf-8格式了
在有#_*_coding:utf-8*_的情況下,你在宣告變數如果寫成name=u"大保健",那這個字元就是unicode格式,不加這個u,那你宣告的字串就是utf-8格式
utf-8 to gbk怎麼轉,utf8先decode成unicode,再encode成gbk
2:再說python3
py3裡預設檔案編碼就是utf-8,所以可以直接寫中文,也不需要檔案頭宣告編碼了,乾的漂亮
你宣告的變數預設是unicode編碼,不是utf-8, 因為預設即是unicode了(不像在py2裡,你想直接宣告成unicode還得在變數前加個u), 此時你想轉成gbk的話,直接your_str.encode("gbk")即可以
但py3裡,你在your_str.encode("gbk")時,感覺好像還加了一個動作,就是就是encode的資料變成了bytes裡,我擦,這是怎麼個情況,因為在py3裡,str and bytes做了明確的區分,你可以理解為bytes就是2進位制流,你會說,我看到的不是010101這樣的2進位制呀, 那是因為python為了讓你能對資料進行操作而在記憶體級別又幫你做了一層封裝,否則讓你直接看到一堆2進位制,你能看出哪個字元對應哪段2進位制麼?什麼?自己換算,得了吧,你連超過2位數的數字加減運算都費勁,還還是省省心吧。
那你說,在py2裡好像也有bytes呀,是的,不過py2裡的bytes只是對str做了個別名(python2裡的str就是bytes, py3裡的str是unicode),沒有像py3一樣給你顯示的多出來一層封裝,但其實其內部還是封裝了的。 這麼講吧, 無論是2還是三, 從硬碟到記憶體,資料格式都是 010101二進位制到-->b'\xe4\xbd\xa0\xe5\xa5\xbd' bytes型別-->按照指定編碼轉成你能看懂的文字
編碼應用比較多的場景應該是爬蟲了,網際網路上很多網站用的編碼格式很雜,雖然整體趨向都變成utf-8,但現在還是很雜,所以爬網頁時就需要你進行各種編碼的轉換,不過生活正在變美好,期待一個不需要轉碼的世界。
最後,編碼is a piece of fucking shit, noboby likes it.
Python基礎:編碼
相關文章
- python基礎之字串和編碼Python字串
- Python基礎:編碼規範(4)Python
- Python基礎之七:編碼詳解Python
- Python字元編碼的常用種類!Python基礎教程Python字元
- 【python系統學習16】編碼基礎知識Python
- 音訊編碼基礎知識音訊
- Linux 指令碼編寫基礎Linux指令碼
- Linux指令碼編寫基礎Linux指令碼
- 音訊編碼基礎詳解音訊
- C# 基礎知識:字元編碼、編碼轉換C#字元
- java安全編碼指南之:基礎篇Java
- Linux指令碼編寫基礎(五)Linux指令碼
- Linux 指令碼編寫基礎(轉)Linux指令碼
- 『無為則無心』Python基礎 — 9、Python字串的編碼與轉義Python字串
- python基礎(16):學生資訊管理系統——Python編寫(附全部程式碼)Python
- Python基礎學習篇-1-編碼-互動模式-註釋Python模式
- 彙編基礎
- Python基礎篇-Python基礎01Python
- iOS逆向之旅(基礎篇) — 彙編(一)— 彙編基礎iOS
- 【iOS 搭建基礎框架】編碼規範 (程式碼格式篇)iOS框架
- android Java BASE64編碼和解碼一:基礎AndroidJava
- python基礎中的基礎Python
- 【基礎進階】URL詳解與URL編碼
- Python基礎筆記01-Python基礎Python筆記
- 學習電腦編碼utf-8,ansi編碼的基礎知識等
- python 基礎Python
- Python 基礎 (-)Python
- python基礎①Python
- python基礎Python
- Python基礎:語法基礎(3)Python
- 【編測編學】零基礎學python_04_字串(刪除空白)Python字串
- RFID 基礎/分類/編碼/調製/傳輸
- Python基礎面試題30問!Python基礎教程Python面試題
- C編譯: makefile基礎編譯
- C 編譯: makefile 基礎編譯
- iOS彙編基礎(一)iOS
- python編碼Python
- 【編測編學】零基礎學python_10_列表(建立數值列表 )Python