python編碼問題

2021-09-24 16:48:15 字數 1691 閱讀 3377

python 兩個版本中字串的區別

python2到python3版本乙個最大的最明顯的區別就是python3支援中文了,

首先我們來先說下python2的情況,

python2使用的是ascii碼編碼的,預設是不支援中文的,中文不能正常的儲存。但是可以在開頭加上這句# -- coding:utf-8 -- 來設定程式的編碼就可以了,

當使用print輸出中文時又發現有些能正常輸出有些卻是亂碼,這時只要將不能正常輸出的中文字串前面加上』u』字母就可以了。

到這裡就已經引出了python2中的兩種字串型別,str和unicode,可以簡單的理解為str是機器能識別的字串,而unicode是我們能看懂的字串,str可以解碼(decode)成unicode,unicode可以編碼(encode)成str。在idle的shell中中文會成』gbk』的編碼,用什麼編碼就得用什麼解碼。

例,在python2中:

a =

'中文'

'\xd6\xd0\xce\xc4'

b = u'中文'

u'\u4e2d\u6587'

a.decode(

'gbk'

)u'\u4e2d\u6587'

b.encode(

'gbk'

)'\xd6\xd0\xce\xc4'

在python3中使用的就是unicode國際編碼,utf-8是unicode編碼的一種形式,是支援中文的。python3中的字串有兩種,str和bytes,這裡str其實就是python2中的unicode,而bytes是python2中的str。所以這裡的str可以編碼(encode)成bytes,bytes可以解碼(decode)成str。

例,在python3 中:

a =

'中文'

'中文'

a.encode(

'utf-8'

)b'\xe4\xb8\xad\xe6\x96\x87'

b = b'\xe4\xb8\xad\xe6\x96\x87'

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

b.decode (

'utf-8'

)'中文'

'你好'

a = s.encode(

'utf8'

)# b'\xe4\xbd\xa0\xe5\xa5\xbd' 6位元組

b = s.encode(

'gbk'

)# b'\xc4\xe3\xba\xc3』 4個位元組

# 編譯碼要一樣格式

c = b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode(

'utf8'

)# 你好

d = b'\xc4\xe3\xba\xc3'.decode(

'gbk'

)# 你好

python把gdb格式的文字檔案轉為utf-8的格式

content.decode(

"gbk"

).encode(

"utf8"

)

Python編碼問題

tag python,encoding,unicode 現有的字元編碼 ascii,gbk,gb2312,utf 8,unicode.unicode可以用來表示所有語言的字元,而且是定長雙位元組 也有四位元組的 編碼,包括英文本母在內。python中定義乙個unicode字串和定義乙個普通字串一樣簡...

python編碼問題

python裡面基本上要考慮三種編碼格式 1 原始檔編碼 在檔案頭部使用coding宣告。告訴python直譯器該 檔案所使用的字符集。usr bin python coding utf8 2 內部編碼 檔案中的字串,經過decode以後,被轉換為統一的unicode格式的內部資料,類似於u uni...

Python編碼問題

python裡面基本上要考慮三種編碼格式 1 原始檔編碼 在檔案頭部使用coding宣告。告訴python直譯器該 檔案所使用的字符集。usr bin python coding utf8 2 內部編碼 檔案中的字串,經過decode以後,被轉換為統一的unicode格式的內部資料,類似於u uni...