python2和python3編碼解碼的問題

2021-09-24 13:20:50 字數 1901 閱讀 9320

python3預設情況下,是通過unicode直接編碼操作的,對於字串、特殊字元、數字的支援都是一致的,字串的編碼和解碼操作方式非常簡潔

s = 『abc』宣告了乙個字串,這個字串就是構造了乙個str物件,預設情況下就是通過unicode直接編碼的字元

如果將字元轉換成位元組,進行編碼操作:

s.encode(「utf-8」)

s = 「中文」

x = s.encode(「utf-8」)

xb』\xe4\xb8\xad\xe6\x96\x87』

如果將位元組轉換成字元,進行編碼操作:s.decode(「utf-8」)

x

b』\xe4\xb8\xad\xe6\x96\x87』

x.decode(「utf-8」)

『中文』

python2中,預設情況下是通過ascii編碼進行操作的

建立的字串s=」abc」是str型別的,在python2中是bytes位元組型別的

預設情況下:

s = 「中文」

s『\xd6\xd0\xce\xc4』

如果在宣告的時候就需要乙個中文字串,在字串的前面新增乙個u字元,表示是通過unicode編碼的

s = u』中文』

su』\u4e2d\u6587』

如果是預設位元組形式的中文字串,要得到原本的中文形式,需要decode()函式操作

s = 「中文」

s『\xd6\xd0\xce\xc4』

x = s.decode(「gbk」)

xu』\u4e2d\u6587』

如果要將乙個unicode編碼的字串轉換成ascii編碼進行後續的操作

?為什麼要轉換成ascii編碼?因為python內建的大量模組,並沒有提供中文支援,呼叫內建模組的函式操作時,如果出現了非ascii編碼,就會出現ascii編碼不支援的錯誤

unicodeencodeerror: 『ascii』 codec can』t encode characters

將unicode字串,轉換成bytes型別的str字串

轉換方式:

s = u"中文"

su』\u4e2d\u6587』

s.encode(「gbk」)

x = s.encode(「gbk」)

x『\xd6\xd0\xce\xc4』

python2中,將乙個字串確定型別[str|unicode],然後根據實際的型別進行操作

如果是用於控制台等等展示操作(給人看):字元的方式展示

如果是用於python2內建模組進行使用(python2使用):位元組的方式使用

警告:python2中的str型別,預設就有乙個encode()函式,但是這個函式只是在定義時為了物件操作的完整性出現的,使用會直接報錯[預計-保留函式]

python2中的unicode型別,預設有乙個decode()函式,同樣不要去使用!

###如何將u"\\u4eba\\u9759\\u65f6"型別的字串變為u"\u4eba\u9759\u65f6"的資料

例:>>> s =u』\\u4eba\\u9759\\u65f6』

>>>s.decode(「unicode-escape」)

>>>u』\u4eba\u9759\u65f6』

###將』\u4e2d\u56fd』直接轉換成漢字

>>>s=』』\u4e2d\u56fd"

>>>print(s.decode(『unicode-escape』))

結果:中國n

python3和python2的區別

1.效能 py3.0執行 pystone benchmark的速度比py2.5慢30 guido認為py3.0有極大的優化空間,在字串和整形操作上可 以取得很好的優化結果。py3.1效能比py2.5慢15 還有很大的提公升空間。2.編碼 py3.x原始碼檔案預設使用utf 8編碼,這就使得以下 是合...

Python2和Python3的比較

python2 python3 print fish print fish unicode 是單獨的 unicode utf 8 字串 b b china byte 和 bytearrays type b type bytes s b.decode 轉化成 string 型別b1 s encode ...

python3和python2的區別

這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...