Python3.7之字符編碼


一、編碼與解碼

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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM