首先要搞懂本地操作系統編碼與系統編碼的區別: 1. 本地操作系統編碼方式與操作系統有關,Linux預設編碼方式為utf 8,Windows預設編碼方式為gbk; 2. 系統編碼方式與編譯器or解釋器有關,Python3解釋器預設編碼方式為unicode。 3. 編碼方式不僅僅代表編碼,也包括解碼,因 ...
首先要搞懂本地操作系統編碼與系統編碼的區別:
- 本地操作系統編碼方式與操作系統有關,Linux預設編碼方式為utf-8,Windows預設編碼方式為gbk;
- 系統編碼方式與編譯器or解釋器有關,Python3解釋器預設編碼方式為unicode。
- 編碼方式不僅僅代表編碼,也包括解碼,因為編碼與解碼是相對應的。
好了,進入正題:
字元串的encode方法會預設編碼為utf8格式,gbk編碼方式相容gb2312
兩個文件都出現了這樣的問題
 
其中一個我們點擊Reload in “GBK”進行了重載,內容正常顯示了
另一個我們點擊下麵的GBK編碼方式看看
什麼意思呢,我來解釋一下
Reload:從硬碟中以新的編碼方式讀取內容並顯示在編輯器上,文件在硬碟上的編碼方式不改變
Convet:將現在編輯器上的內容以新的編碼方式寫入硬碟,覆蓋掉原先的內容,編碼方式改變。
第一個文件已經選擇了Reload,這個文件我們選擇Convert
所以,這個文件會將Python�е����顪���뷽ʽ
這些內容以gbk編碼方式存入硬碟,結果是這樣
接下來我們驗證以下我們的想法
補充:
網路上的數據以位元組流的方式傳輸,所以
要用utf-8解碼才可以得到正確的字元串內容
 
當然如果想存入文件的話就需要註意啦
從文件中讀取的時候可要小心啊,要以文件相應的編碼方式讀出,比如open函數指定encoding,或者以二進位方式讀出,之後在調用str.decode()方法以指定encoding解碼。