Python中byte與str

現(xiàn)在計(jì)算機(jī)中,在內(nèi)存中采用unicode編碼方式。

可以看到上圖中,字節(jié)型數(shù)據(jù)t并沒(méi)有像想象中的一樣顯示0,1字符串。顯示仍然是b,這是因?yàn)閠是采用utf-8來(lái)編碼,而utf-8與unicode編碼中的字符部分的編碼方式是一樣的,因此在顯示t的時(shí)候,在內(nèi)存中采用unicode解碼,而兩種編碼方式的字符部分一樣,因此顯示并沒(méi)有什么區(qū)別。


在這幅圖中,可以直觀的看到t是0,1數(shù)據(jù)串,這里為了便于觀看,顯示的是16進(jìn)制,utf-8與unicode漢字部分的編碼是不一樣的,unicode無(wú)法進(jìn)行解碼,因此這里的t只能用0,1串來(lái)顯示。


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

encode()函數(shù):將unicode編碼轉(zhuǎn)換成其他的編碼方式。

decode()函數(shù):將其他編碼方式轉(zhuǎn)換成unicode編碼方式。

大家知道unicode的存儲(chǔ)效率低,會(huì)浪費(fèi)很多空間,因此在保存文本時(shí),很多時(shí)候并不是用unicode編碼方式,有很多其他的編碼,utf-8,gbk,還有日文,韓文編碼等,下面以讀取一個(gè)用utf-8的文本為例:

首先將utf-8轉(zhuǎn)換成unicode編碼方式,然后再來(lái)譯碼。

簡(jiǎn)單來(lái)說(shuō),就是計(jì)算機(jī)內(nèi)存中是以u(píng)nicode編碼為橋梁的。

如果說(shuō)從從其他編碼方式轉(zhuǎn)換成unicode這一過(guò)程出錯(cuò),就會(huì)產(chǎn)生亂碼,例如文本使用日文編碼保存的,你用gbk來(lái)解碼就會(huì)產(chǎn)生亂碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容