Python中encode和encoding的區(qū)別是什么?
大家好,我是Python進(jìn)階者。
前言
前幾天有個(gè)叫【Alyine】的粉絲在問(wèn)了一道關(guān)于Python編碼的問(wèn)題,如下圖所示。
說(shuō)來(lái)也巧合,就在前幾天路飛學(xué)城的樵夫老師在xxx云音樂(lè)JS逆向的公開(kāi)課上講JS逆向破解的時(shí)候,也涉及到了這兩個(gè)東東,當(dāng)時(shí)講的很快,很多小伙伴們估計(jì)也有些蒙圈。
可以看到下圖的代碼中,encode()直接上來(lái)就是個(gè)函數(shù),而沒(méi)有加utf-8這樣的編碼字樣。
作為有些強(qiáng)迫癥的小編,我是看不下去的,雖然我也看了他的課程,但是小編自己加上編碼,也并沒(méi)有報(bào)錯(cuò)。
一、思路
其實(shí)解決問(wèn)題的關(guān)鍵點(diǎn)就是在一點(diǎn),搞清楚編碼之間的關(guān)系就可以了。其實(shí)關(guān)于編碼的文章,在之前的文章,小編也寫了好幾篇了,感興趣的小伙伴,為了補(bǔ)習(xí)一下基礎(chǔ),可以前往:一篇文章助你理解Python3中字符串編碼問(wèn)題、淺談unicode編碼和utf-8編碼的關(guān)系,這里就不針對(duì)編碼各大家族進(jìn)行贅述了。
二、分析
encode()函數(shù)默認(rèn)為utf-8類型,正是因?yàn)槿绱?,所以在上面是否加utf-8編碼,都能夠正常的進(jìn)行解析。它的作用是將unicode編碼轉(zhuǎn)換成其他編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串str2轉(zhuǎn)換成gb2312編碼。encode()函數(shù)一般用于字符串轉(zhuǎn)換,在網(wǎng)絡(luò)爬蟲(chóng)的時(shí)候經(jīng)常會(huì)用到。
encoding='編碼類型',將字符串轉(zhuǎn)換為指定編碼的bytes,一般用于讀寫文件的時(shí)候用到。
三、總結(jié)
我是Python進(jìn)階者。本文基于粉絲提問(wèn),針對(duì)encode和encoding的區(qū)別做了簡(jiǎn)單講解。