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...