一篇文章助你理解Python3中字符串编码问题
前幾天給大家介紹了unicode編碼和utf-8編碼的理論知識(shí),以及Python2中字符串編碼問(wèn)題,沒(méi)來(lái)得及上車(chē)的小伙伴們可以戳這篇文章:淺談unicode編碼和utf-8編碼的關(guān)系和一篇文章助你理解Python2中字符串編碼問(wèn)題。下面在Python3環(huán)境中進(jìn)行代碼演示,分別Windows和Linux操作系統(tǒng)下進(jìn)行演示,以加深對(duì)字符串編碼的理解。
在Python2的Python文件的文件頭往往會(huì)聲明字符的編碼格式,通過(guò)會(huì)使用代碼“#-*- coding -*-”作為編碼聲明,如下圖所示。
因?yàn)榭紤]到Python文件中可能會(huì)穿插中文,不然的話(huà)Python通過(guò)解釋器來(lái)讀取文件的時(shí)候,文件中的中文就有可能識(shí)別不了。而在Python3中,我們就不必像Python2的文件那樣進(jìn)行聲明編碼格式了,因?yàn)樵赑ython3中,默認(rèn)將所有的字符都視為unicode格式了。下面在Python3環(huán)境下進(jìn)行代碼演示。
1、首先在Windows操作系統(tǒng)下的Python3環(huán)境中進(jìn)行演示,如下圖所示。
可以看到str1就是一個(gè)中文的字符串,字符串前面也沒(méi)有加u以表示其為unicode編碼,其實(shí)也沒(méi)有必要加那個(gè)字符,因?yàn)樵赑ython3中將所有的字符都內(nèi)置成unicode字符了,這就是Python2和Python3最大的區(qū)別。所有在這里可以直接調(diào)用encode()函數(shù)對(duì)字符串進(jìn)行編碼,而且也不會(huì)報(bào)錯(cuò)。
2、接下來(lái)在Linux操作系統(tǒng)下的Python3環(huán)境中進(jìn)行演示,如下圖所示。
這個(gè)過(guò)程和Windows下是一樣的,這里就不再贅述了。有個(gè)地方需要注意的是在Linux操作系統(tǒng)下,Python3的默認(rèn)環(huán)境編碼變?yōu)榱藆tf-8編碼,而不是Python2中的ASCII編碼。
總的來(lái)說(shuō),Python3解決了一個(gè)字符串編碼的重要問(wèn)題,所以在字符串編碼的報(bào)錯(cuò)方面相對(duì)Python2來(lái)說(shuō)要少的多,幫助我們省下了很多事情。小伙伴們,關(guān)于在Python2和Python3中字符串的編碼問(wèn)題這個(gè)知識(shí)點(diǎn)十分重要,希望大家都可以get到噢~~
總結(jié)
以上是生活随笔為你收集整理的一篇文章助你理解Python3中字符串编码问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: cookie与session详解
- 下一篇: python笔试常见题