一、編碼與解碼
1.編碼
str.encode(encoding='UTF-8',errors='strict'),返回編碼之后的字節串。
s = '你好世界'
s_utf8 = s.encode('utf-8')
print(s_utf8)
b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
其中,b' '代表bytes類型字節串,以16進制形式表示 ,2個16進制數構成一個byte。
py3 文件的默認編碼是utf-8,py2文件的默認編碼是ASCII碼,pycharm 默認加載文件都是用utf-8編碼。
2.解碼
str.decode(encoding='UTF-8',errors='strict'),返回解碼之后的字符串。
print(s_utf8.decode('utf-8'))
你好世界
二、編碼轉換
Windows默認文件編碼方式為gbk,mac與Linux默認文件編碼方式為utf-8,在用記事本打開不同系統下的文件時,會出現亂碼,故要進行編碼轉換。
編碼轉換方式: gbk --->unicode --> utf-8
Unicode為萬國碼,與所有編碼方式之間均有映射關系,utf-8為Unicode的簡化版本。其中gbk用三個字節表示一個中文字符,Unicode用兩個字節表示一個中文字符。
1.用pycharm進行編碼轉換
with open(file='你好世界.txt', mode='r', encoding='gbk') as f:
s = f.read()
print(s)
print(type(s))
你好世界
<class 'str'>
2.用編程方式進行編碼轉換
轉換原則:gbk(bytes字節)--->Unicode(str) --->utf-8(bytes字節)
以二進制形式打開(讀取)文件的操作:
with open(file='你好世界.txt', mode='rb') as f:
s = f.read()
print(s)
print(type(s))
b'\xc4\xe3\xba\xc3\xca\xc0\xbd\xe7'
<class 'bytes'>
編碼轉換操作
f = open(file='你好世界.txt', mode='rb')
s = f.read()
f.close()
s_unicode = s.decode('gbk') # 轉成Unicode
s_utf8 = s_unicode.encode('utf-8') # 編碼成utf-8
with open(file='你好世界.txt', mode='wb') as f:
f.write(s_utf8)
