1. 程式人生 > >python字元編碼和檔案處理

python字元編碼和檔案處理

 

一.瞭解字元編碼的知識儲備

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