Python中byte與str


 

 

原文傳送門:請點擊

 

現在計算機中,在內存中采用unicode編碼方式。

可以看到上圖中,字節型數據t並沒有像想象中的一樣顯示0,1字符串。顯示仍然是b,這是因為t是采用utf-8來編碼,而utf-8與unicode編碼中的字符部分的編碼方式是一樣的,因此在顯示t的時候,在內存中采用unicode解碼,而兩種編碼方式的字符部分一樣,因此顯示並沒有什么區別。

 

在這幅圖中,可以直觀的看到t是0,1數據串,這里為了便於觀看,顯示的是16進制,utf-8與unicode漢字部分的編碼是不一樣的,unicode無法進行解碼,因此這里的t只能用0,1串來顯示。

 

在python3中提供了,encode()和decode()兩個函數,

encode()函數:將unicode編碼轉換成其他的編碼方式。

decode()函數:將其他編碼方式轉換成unicode編碼方式。

大家知道unicode的存儲效率低,會浪費很多空間,因此在保存文本時,很多時候並不是用unicode編碼方式,有很多其他的編碼,utf-8,gbk,還有日文,韓文編碼等,下面以讀取一個用utf-8的文本為例:

首先將utf-8轉換成unicode編碼方式,然后再來譯碼。

簡單來說,就是計算機內存中是以unicode編碼為橋梁的。

如果說從從其他編碼方式轉換成unicode這一過程出錯,就會產生亂碼,例如文本使用日文編碼保存的,你用gbk來解碼就會產生亂碼。


免責聲明!

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



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