在python中遇到編碼問題主要來自於ascii
和gbk
兩個方面。win中python為unicode
編碼而控制台一般為gbk
編碼
ascii
對於ascii來說,是由於這一編碼系統的顯示導致其無法編碼中文和特殊字元,所以需要在開始宣告 使用utf-8
編碼.或者在**開頭著名_*_ coding:utf-8 _*_
.
一些有用的命令,查詢系統的**情況:
import sys
sys.stdout.encoding #輸出系統編碼 cp936
import local
locale.getdefaultlocale() #輸出 ('zh_cn', 'cp936')
也可以利用系統模組來進行全域性設定:
import sys
reload(sys);
sys.setdefaultencoding('utf-8')
gbk
gbk
不能解碼的問題主要來自於控制台輸出為gbk預設編碼,所以需要將待輸出的string先encode(『gbk』)以符合控制台的輸出,這時候某些在python中的以unicode編碼的字元無法用gbk表示,就會造成無法輸出\x 0x0x
的字樣.
所以先要將unicode表示的字串encode('gbk')
交給print才能使用控制台預設編碼gbk輸出。
s = "some speciall characeres #$%^&*"
s.encode('gbk','ignore'); #ignore encode problems
print s
儲存檔案的時候呼叫的是python內部的寫模組,所以gbk不會報錯,windows cmd
輸出才會報錯。在進行網路程式設計時,將get或者post等響應指定編碼是很重要的response.encoding = 'utf-8'
。
乙個編碼解碼的流程:
字元|—–編碼encode —-> |byte位元組流| ———-解碼decode——–>|字元。
其中編碼和解碼就是一種資料的轉換方式,將字元轉為一種位元組的表示,包括ascii,gbk,unicode
,不同編譯碼的規則就是不同的字元編碼方案。
注:python3 預設編碼為unicode,但win系統不是,造成ptint輸出使用系統預設編碼而報錯。參考資料1,2,3,4一定要注意win系統的gbk編碼不足以表示所有的字元,同時ascii編碼也不夠表示中文和特殊字元。接收字元的時候指定為
unicode
編碼規避ascii問題,輸出的時候根據系統來指定編碼避免報錯。可以用
unicodeencodeerror
#來捕捉編碼異常- python 中變數預設是utf-8編碼,輸出就需要用對應的
decode('utf-8')
來解碼,或者使用輸出對應編碼來encode('gbk')
, 終端輸出包含了對byte的解碼過程。
Python中的編碼問題
花了點時間研究了一下python中的編碼問題,在python2.的版本中存在著以下兩種字串的型別 python字串中的str型別和unicode型別 因此,同樣是 編碼 兩個漢字,分別用str型別和unicode型別儲存時對應的type完全不一樣,以下是他們賦值操作的區別 str型別和unicode...
python中編碼問題
1.指示編碼修正 標頭檔案一般宣告為 coding utf 8 意思是 當檔案中有非utf 8的編碼時就會自動轉換成utf 8,這中間的過程一般是非utf 8編碼 unicode utf8,一般編碼與解碼的中間格式都是unicode 2.sys.setdefaultencoding utf 8 使用...
python中編碼問題
編碼是將儲存在檔案中的二進位制資料以特定的格式顯示的一種手段。不同的作業系統 不同的編輯環境,對於python進行檔案操作帶來了很大的挑戰,總體表現在三方面 1 作業系統對檔案編碼的影響 2 python編輯環境對python編碼的影響 3 檔案內容對編碼的要求 擴充套件來說 1 不同作業系統,生成...