python的編碼問題,一直都讓人很頭疼,今天就整理下python的編碼知識。
首先:字串在python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
decode
:作用是將其他編碼的字串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字串str1轉換成unicode編碼。
encode:的作用是將unicode編碼轉換成其他編碼的字串,如str2.encode('gb2312'),表示將unicode編碼的字串str2轉換成gb2312編碼。
因此,轉碼的時候一定要先搞明白,字串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼。
**中字串的預設編碼與**檔案本身的編碼一致。
如:s='中文'
如果是在utf8的檔案中,該字串就是utf8編碼,如果是在gb2312的檔案中,則其編碼為gb2312。這種情況下,要進行編碼轉換,都需要先用decode方法將其轉換成unicode編碼,再使用encode方法將其轉換成其他編碼。通常,在沒有指定特定的編碼方式時,都是使用的系統預設編碼建立的**檔案。
如果字串是這樣定義:s=u'中文'
則該字串的編碼就被指定為unicode了,即python的內部編碼,而與**檔案本身的編碼無關。因此,對於這種情況做編碼轉換,只需要直接使用encode方法將其轉換成指定編碼即可。
如果乙個字串已經是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷:
isinstance(s, unicode) #用來判斷是否為unicode
用非unicode編碼形式的str來encode會報錯
python 19 異常處理
什麼是異常處理?對於使用者輸入,不想讓使用者看見出錯資訊,對異常進行處理 異常處理的框架是什麼?try 可能出錯的程式1 可能出錯的程式2 程式1出錯了,不在執行程式2 except 錯誤 as e e接收出錯的值,想抓多個錯誤 錯誤1,錯誤2,建議用單獨乙個錯誤,多個錯誤處理原則上是統一處理錯誤。...
python 19 裝飾器高階
假如我們寫了幾百個甚至更多的函式都用同乙個裝飾器,這時需不要使用裝飾器可怎麼辦?乙個乙個取消很現實 但是我們可以寫全域性的引數,讓其生效或不生效。本篇將用帶引數的裝飾器能解決此問題 1 帶引數裝飾器,利用全域性變數,flag true or false true 就走裝飾器 if 否則不走裝飾器,例...
小白學 Python(19) 基礎異常處理
人生苦短,我選python 前文傳送門 小白學 python 1 開篇 小白學 python 2 基礎資料型別 上 小白學 python 3 基礎資料型別 下 小白學 python 4 變數基礎操作 小白學 python 5 基礎運算子 上 小白學 python 6 基礎運算子 下 小白學 pyth...