‘unicode' 是python字符串(str) 內(nèi)置的編碼格式疮茄,與之對(duì)應(yīng)的字節(jié)序列(bytes)是以二進(jìn)制存儲(chǔ)各類標(biāo)準(zhǔn)字符串的源碼
unicode標(biāo)準(zhǔn)可以處理很多種文字云头,但是消耗存儲(chǔ)空間較大,在硬盤存儲(chǔ)以及網(wǎng)絡(luò)運(yùn)輸中,往往并不使用unicode钉鸯,而是使用utf-8格式
這就涉及到編碼以及解碼的過程:
因?yàn)閜y3中现诀,內(nèi)置是以u(píng)nicode作為字符串的基礎(chǔ)編碼標(biāo)準(zhǔn)夷磕,編碼方法-encode-也是作用于str(unicode)
str_example = 'this is a example'
str_for_transport = str_example.encode('utf-8)
這樣字符串就轉(zhuǎn)化成了可以在硬盤,網(wǎng)絡(luò)中傳輸?shù)母袷?/p>
print(str_for_transport)
在shell中仔沿,或這直接輸出utf-8的文件格式,你會(huì)發(fā)現(xiàn)是 bytes類型的字節(jié)序列尺棋,
b'....'
這樣的二進(jìn)制數(shù)據(jù)就可以以相對(duì)較小的占用封锉,在文件中傳輸
反過來說,python在讀取文件膘螟,讀取網(wǎng)絡(luò)信息時(shí)成福,接受的字符串可能時(shí)utf-8格式的,正常處理就需要解碼荆残,此時(shí)就需要decode方法
b'..'.decode('該文件所用編碼格式-默認(rèn)utf-8')
decode產(chǎn)生對(duì)象是固定的-unicode字符串(str)
這就是編碼和解碼的基礎(chǔ)信息
總結(jié)
unicode是中間件奴艾,方便我們?cè)趐ython中進(jìn)行文字處理
要進(jìn)行傳輸,我們需要進(jìn)行編碼encode到適合的編碼標(biāo)準(zhǔn)
要進(jìn)行接受内斯,我們需要對(duì)接受的信息進(jìn)行解碼decode蕴潦,已得到我們能正常處理的unicode字符串-str
例子
#我有一個(gè)字符串
myStr = '中文'
#我想把他傳輸?shù)街形木W(wǎng)上,我需要把他轉(zhuǎn)化成gb2312格式
myStr_GB =myStr.encode('gb2312')
#中文網(wǎng)想對(duì)我的字符串進(jìn)行處理俘闯,需要進(jìn)行解碼處理
hisStr =myStr_GB.decode('gb2312')