1. 程式人生 > >Python 2.x中常見字元編碼和解碼方面的錯誤及其解決辦法

Python 2.x中常見字元編碼和解碼方面的錯誤及其解決辦法

Python 2.x中的字元編碼,設計的的確不好,導致初學者,甚至是即使用Python很長時間的人,都會經常遇到字元編解碼方面的錯誤。

下面就把一些常見情,儘量的都整理出來,並給出相應的解決辦法。

看此文之前

Python中字元編碼所涉及的背後邏輯(從你輸入字元,到終端顯示字元的背後過程)

在去了解Python編碼解碼之前,還有個更加重要,但是很多時候卻被其他解釋相關知識的人所忽略的問題,那就是:

對於Python中字串,輸入輸出的背後邏輯。

即,知其所以然。

此處就簡單介紹一下,在Python中,從你所輸入的字串,到顯示出字串,這背後的過程是什麼樣的。

只有瞭解了這個大概的過程,和背後的邏輯,你才能真正理解後面的所解釋的,字串編碼解碼方面的錯誤,以及如何解決這樣的錯誤。

對於你

你只是看到的是:

  • 你輸入了字串
    • 不論是從Python的IDLE中輸入的
    • 還是寫入到Python檔案中的
  • 然後你去執行的對應程式碼,該Python程式碼,經過Python系統,(此處及之後,我稱其為Python解析器),的處理
  • 使得你可以看到最終所輸出的字串
    • 不論是在Python的IDLE中看到的
    • 還是在windows的cmd中看到的。

對於Python解析器

而Python解析器所幹的事情,就是:

  1. Python解析器,根據當前的所用的字串編碼型別
    • 此字串編碼型別,是你自己所設定的
      • 不論是在Python的IDLE中,還是Python檔案中
      • 都是你自己顯示指定對應的編碼型別的
    • 當然你沒顯示的指定的話,那就用預設的配置
      • 如果是Python的IDLE,如果你沒修改defaultencoding,那麼就使用預設的字元編碼
        • 可以通過sys.getdefaultencoding()而獲得,比如此處獲得是:ascii
        • idle sys.getdefaultencoding
      • 如果是Python檔案,如果你沒宣告檔案編碼,則使用預設的編碼:UTF-8
        • 常見的做法是指定為對應的UTF-8型別:# -*- coding: utf-8 -*-
          • 相關內容,不瞭解的可參考:【整理】關於Python指令碼開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定檔案編碼型別

更多詳細資訊:https://www.crifan.com/summary_python_2_x_common_string_encode_decode_error_reason_and_solution/