Python2和3字符編碼的區(qū)別知識點整理
python解釋器運行代碼的流程啟動python解釋器(相當于文本編輯器)打開文件,顯示這個字符并檢查語法(涉及字符編碼, a=1只是一個很普通的字符)解釋字符 (涉及字符編碼,再去內(nèi)存空間 生成一個a=1的變量)
python2用的是ascii, python3默認是utf8讀取字符
# coding:gbk會告訴python3解釋器用gbk編碼讀取字符
python3(了解)
你看到的其實是unicode
但是終端幫你把這個unicode的0和1做一個轉(zhuǎn)換,從unicode轉(zhuǎn)換成了終端能夠識別的編碼格式,然后變成中文
# coding:gbk a = '中文' # 用unicode編碼存儲了這堆0和1 print(a) # 010101010
假設(shè)終端的默認編碼是gbk , 認識 unicode編碼的變量
假設(shè)終端的默認編碼是utf8,認識 unicode編碼的變量
Python2(了解)
unicode + 指定的coding編碼(str類型)
# coding:gbk a = '中文' # 用gbk編碼存儲了這堆0和1 a = u'中文' # 用unicode編碼存儲了這堆0和1 print(a)
終端是一個文本編輯器,會有默認編碼.
假設(shè)終端的默認編碼是gbk , 認識 gbk編碼的變量
假設(shè)終端的默認編碼是utf8, 不認識 gbk編碼的變量
總結(jié)
代碼詳情 | Python2執(zhí)行情況 | Python3執(zhí)行情況 |
---|---|---|
# coding:gbk print('中') 終端:utf8 |
亂碼 | 不亂碼 |
# coding:utf8 print('中') 終端:utf8 |
不亂碼 | 不亂碼 |
# coding:gbk print(u'中') 終端:utf8 |
不亂碼 | 不亂碼 |
# coding:utf8 print(u'中') 終端:utf8 |
不亂碼 | 不亂碼 |
不亂碼不亂碼
在Python2中如果指定了字符編碼,那么內(nèi)存存取就會按照指定的字符編碼去入內(nèi)存。解釋或去執(zhí)行時就要按照指定了的字符編碼去解釋,否則就會亂碼。 否則可以在定義變量前面加上u,這樣變量就會以unicode編碼存入內(nèi)存。
如:
#coding:gbkname = "爸爸"
但在Python3中就不會有這樣的問題,因為無論你指定了什么字符編碼,在內(nèi)存存取時都會使用Unicode編碼去入內(nèi)存Unicode編碼可以和任意的字符編碼相互轉(zhuǎn)換,并在讀取時按照所需的編碼區(qū)讀取,這樣就很好解決了字符編碼的問題
以上就是相關(guān)的全部內(nèi)容知識點,感謝大家對腳本之家的支持。
相關(guān)文章
django的分頁器Paginator 從django中導入類
這篇文章主要介紹了django的分頁器Paginator 從django中導入類,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07Python中動態(tài)創(chuàng)建類實例的方法
在Java中我們可以通過反射來根據(jù)類名創(chuàng)建類實例,那么在Python我們怎么實現(xiàn)類似功能呢?其實在Python有一個builtin函數(shù)import,我們可以使用這個函數(shù)來在運行時動態(tài)加載一些模塊2017-03-03Python通過requests模塊實現(xiàn)抓取王者榮耀全套皮膚
只學書上的理論是遠遠不如實踐帶來的提升快,只有在實例中才能獲得能力的提升,本篇文章手把手帶你用Python實現(xiàn)抓取王者榮耀全套皮膚,大家可以在過程中查缺補漏,提升水平2021-10-10詳解如何在Apache中運行Python WSGI應(yīng)用
在生產(chǎn)環(huán)境上,一般會使用比較健壯的Web服務(wù)器,如Apache來運行我們的應(yīng)用,本文中我們就會介紹如何使用Apache模塊mod_wsgi來運行Python WSGI應(yīng)用。感興趣的小伙伴們可以參考一下2019-01-01