python中decode
Ⅰ python讀取txt文檔的時候遇到decode錯誤如何解決
你用的是python3才會出這個問題。python3在readlines里,預設會使用操作系統當前的編碼來解析文件,比如windows下就用GBK,在linux下則根據當前language來設置解析辦法。
解決的辦法是在open()里加上參數
將
fi=open('somefile.txt','r')
改成
fi=open('somefile.txt','rt',encoding="utf-8")
這個encoding就是指定編碼格式。如果encoding="utf-8"不行,你就改成encoding="gb18030",如果還不成,就改成encoding="big-5"。如果還不成。只能手工將" —"
替換成負號。
Ⅱ pythonencode和decode的區別
encode編碼,decode解碼
相反的兩個過程。
Ⅲ python怎麼知道一個字元串的編碼方式
字元串的編碼,有很多種如utf-8,gb2312,gbk,gb18030,bz2,zlib,big5,bzse64
python 對編碼的處理有兩個方法,decode()和 encode()方法
a='你好'
b='python'
printa.decode('utf-8').encode('gbk')##decode方法把字元串轉換為unicode對象,然後通過encode方法轉換為指定的編碼字元串對象
printb.decode('utf-8')##decode方法把字元串轉換為unicode對象
所以要讓python(或者說機器)來識別字元串的編碼,是一件很困難的事。編碼就是漢字和整數之間的對應,同一個整數,可以在不同的編碼中,都有對應的漢字。比如下面的例子,比特流'xe6xb0xb4xe5xa3xb6'在四種編碼中都有對應的漢字,但只有在utf-8編碼下,它對應的漢字才有意義。我們可以一眼看出這點,可是要讓計算機做到這點,就很難了。
>>>s='水壺'
>>>s
18:'xe6xb0xb4xe5xa3xb6'
>>>printunicode(s,'big5')
瘞游ㄥ
>>>printunicode(s,'gbk')
姘村6
>>>printunicode(s,'gb2312')
姘村6
>>>printunicode(s,'utf-8')
水壺
Ⅳ 為什麼python decode每效果
decode()方法使用注冊編碼的編解碼器的字元串進行解碼。它默認為默認的字元串編碼。
語法
以下是decode()方法的語法:
str.decode(encoding='UTF-8',errors='strict')
參數
encoding -- 這是所使用的編碼。對於所有的編碼方案的列表,請訪問:標准編碼庫
errors --
這可能是給定一個不同的錯誤處理機制。默認的錯誤是「嚴格」,即編碼錯誤提出UnicodeError。其他可能的值是ignore',
'replace', 'xmlcharrefreplace', 'backslashreplace'
並通過codecs.register_error().注冊的任何其他名稱。
返回值
此方法返回的字元串的解碼版本。
例子
下面的例子顯示了decode()方法的使用。
#!/usr/bin/python
str = "this is string example....wow!!!";
str = str.encode('base64','strict');
print "Encoded String: " + str;
print "Decoded String: " + str.decode('base64','strict')
當我們運行上面的程序,它會產生以下結果:
Encoded String: =
Decoded String: this is string example....wow!!!
Ⅳ python decode之後是什麼編碼
是unicode,如果原來是gbk我要轉utf-8應該這樣:
a="某gbk編碼內容"
a.decode('gbk').encode('utf-8')
#先用gbk的方式解碼成unicode再把unicode轉換成utf-8
Ⅵ python3 沒有str.decode怎麼辦
python3中encode和decode跟python2還是有一定的區別的,在python3中:
encode(編碼):按照某種規則將「文本」轉換為「位元組流」。 python 3中表示:unicode變成str
decode(解碼):將「位元組流」按照某種規則轉換成「文本」。 python3中表示:str變成unicode
字元串在Python內部的表示是Unicode編碼,因此在做編碼轉換時,通常需要以Unicode作為中間編碼,即先將其他編碼的字元串解碼(decode)成Unicode,再從Unicode編碼(encode)成另一種編碼。
Ⅶ python3 decode()和encode()默認是什麼編碼格式
默認是utf-8
python3全面支持utf-8,再也不必為編碼煩惱了
Ⅷ Python中中文字元串怎麼處理
如果處理的字元串中出現中文表示的字元,要想不出錯,就得轉成unicode編碼了。具體的方法有:
1、decode(),將其他邊編碼的字元串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字元串str1轉換成unicode編碼;
2、encode(),將unicode編碼轉換成其他編碼的字元串,如str2.encode('gb2312'),表示將unicode編碼的字元串str2轉換成gb2312編碼;
3、unicode(),同decode(),將其他編碼的字元串轉換成unicode編碼,如unicode(str3, 'gb2312'),表示將gb2312編碼的字元串str3轉換成unicode編碼。
轉碼的時候一定要先搞明白字元串str是什麼編碼,然後decode成unicode,最後再encode成其他編碼。
另外,對一個unicode編碼的字元串在進行解碼會出錯,所以在編碼未知的情況下要先判斷其編碼方式是否為unicode,可以用isinstance(str, unicode)。
不僅是中文,以後處理含非ascii編碼的字元串時,都可以遵循以下步驟:
1、確定源字元的編碼格式,假設是utf8;
2、使用unicode()或decode()轉換成unicode編碼,如str1.decode('utf8'),或者unicode(str1, 'utf8');
3、把處理後字元串用encode()編碼成指定格式。