bytes類型和python中編碼的轉換方法


一、bytes類型

bytes類型是指一堆字節的集合,在python中以b開頭的字符串都是bytes類型。例如:

>>> a = "中國"
>>> a.encode("utf-8")
b'\xe4\xb8\xad\xe5\x9b\xbd'

py3中字符串都是Unicode編碼,顯示正常字符,其余編碼的數據都以bytes類型顯示。

bytes類型的作用:

計算機只能存儲2進制, 我們的字符、圖片、視頻、音樂等想存到硬盤上,也必須以正確的方式編碼成2進制后再存。

對於文字,我們可以以gbk編碼,也可以以utf-8、ASCII編碼。

對於圖片,必須編碼成PNG,JPEG等格式

對於音樂,必須編碼成MP3,WAV等...

在python中, 數據轉成2進制后不是直接以0101010的形式表示的,而是用一種叫bytes(字節)的類型來表示,其中用16進制表示的二進制字節,即一個16進制表示四位二進制,2個16進制代表一個字節。

在python中,字符串必須編碼成bytes后才能存到硬盤上。如果不在文件頭聲明編碼,python3在文件存儲中默認用utf-8編碼。

另外,python中,字符的編碼例如gbk、utf-8、ASCII等還可以識別轉換,而圖片、音樂、視頻等,編碼不能識別,只能以bytes形式出現,傳輸存儲。

二、python中編碼的轉換方法

編碼轉換是指將一種編碼轉成另外一種編碼,比如 utf-8 to gbk。

編碼轉換的作用:

不同操作系統編碼不同, utf-8在win上沒辦法直接看,因為windows是GBK編碼的,得轉成gbk。

反過來如果你的GBK字符相在Linux\Mac上正常顯示,就得轉成utf-8編碼。

另外,或者在python中將字符串定義直接定義為unicode編碼,引號前加u,在任何系統都正常顯示:

a = u"word"
>>> a
u'word'
>>> type(a)
<type 'unicode'>

編碼轉換的方法:

decode()解碼,encode()編碼

UTF-8 --> decode 解碼 --> Unicode
Unicode --> encode 編碼 --> GBK / UTF-8

例如:

>>> a = "中國"
>>> b = a.encode("utf-8")
>>> print(b)
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> b.decode("utf-8")
'中國'

注:以什么編碼,就要以什么解碼,要不然就出錯或者亂碼了


免責聲明!

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



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