python字元編碼和檔案處理
阿新 • • 發佈:2018-11-23
一.瞭解字元編碼的知識儲備
1.文字編輯器存取檔案的原理(nodepad++,python,word)
- 開啟編輯器就打開了啟動了一個程序,是在記憶體中的,所以,用編輯器編寫的內容也都是存放於記憶體中的,斷電後資料丟失
- 要想永遠儲存,需要點選儲存按鈕:編輯器把記憶體的資料刷到硬碟上
- 在我們編寫一個py檔案(沒有執行),跟編寫其他檔案沒有任何區別,都只是在編寫一堆字元而已.
2.python直譯器執行py檔案的原理,(python,test.py)
- 第一階段: python直譯器啟動,此時就相當於啟動了一個文字編輯器
- 第二階段:python直譯器相當於文字編輯器,去開啟test.py檔案,從硬碟上將test.py的檔案內容讀入到記憶體中
- 第三階段:python直譯器解釋執行剛剛載入到記憶體中test.py的程式碼
3.過程:
文字編輯器°一個檔案的三個過程:
- 先啟動文字編輯器
- 檔案編輯器會將檔案內容讀入記憶體
- 將讀入記憶體的內容顯示到螢幕上
CPython直譯器執行一個py檔案的三個過程:
- 先啟動python直譯器
- python直譯器會將py檔案的內容當中普通的文字內容讀入記憶體
- 開始解釋執行剛剛讀入記憶體的程式碼,識別python語法
4.字元編碼
字元編碼指的是字元轉換成或者編碼成數字
編碼的過程一定要遵循一個標準,該標準稱之為字元編碼表
- ASCII表:只能識別英文字元,用8bit對應一個英文字元 (一個英文字元===>1Bytes)
- GBK表:可以識別中文字元/英文字元,用8bit對應一個英文字元,用16bit對應一箇中文字元(1個英文字元==>1Bytes/ 1箇中文字元==>2Bytes)
- unicode(記憶體中預設使用該編碼) :用2Bytes表示一個字元(特點: 1.可以識別萬國字元 2.與各種字元編碼的二進位制數字都有對應關係)
- utf-8全稱Unicode Transformaation Format: (1個英文字元==>1Bytes 1箇中文字元==>3Bytes)
結論:
1.編碼與解碼
字元---------編碼--------->>數字
字元<<-------解碼-----------數字
unicode二進位制---------編碼-------->>utf-8二進位制
unicode二進位制<<-------解碼----------utf-8二進位制
2.記憶體中固定使用unicode編碼,我們可以改變的是資料由記憶體刷到硬碟時採用的編碼 (應該採用utf-8)
unicode的特點:
1.可以識別萬國字元
2.與各種字元編碼的二進位制數字都有對應關係
3.解決亂碼問題的核心
1.字元當初以什麼編碼存的,就應該以什麼編碼去讀
2.保證執行python程式的前兩個階段不亂碼的解決方案:新增檔案頭 (在檔案首行新增 "#coding: 檔案當初存的字元編碼)
4.python直譯器預設的編碼
python3: utf-8
python2: ASCII