Python2和3字符編碼的區(qū)別知識(shí)點(diǎn)整理
python解釋器運(yùn)行代碼的流程啟動(dòng)python解釋器(相當(dāng)于文本編輯器)打開文件,顯示這個(gè)字符并檢查語(yǔ)法(涉及字符編碼, a=1只是一個(gè)很普通的字符)解釋字符 (涉及字符編碼,再去內(nèi)存空間 生成一個(gè)a=1的變量)
python2用的是ascii, python3默認(rèn)是utf8讀取字符
# coding:gbk會(huì)告訴python3解釋器用gbk編碼讀取字符
python3(了解)
你看到的其實(shí)是unicode
但是終端幫你把這個(gè)unicode的0和1做一個(gè)轉(zhuǎn)換,從unicode轉(zhuǎn)換成了終端能夠識(shí)別的編碼格式,然后變成中文
# coding:gbk a = '中文' # 用unicode編碼存儲(chǔ)了這堆0和1 print(a) # 010101010
假設(shè)終端的默認(rèn)編碼是gbk , 認(rèn)識(shí) unicode編碼的變量
假設(shè)終端的默認(rèn)編碼是utf8,認(rèn)識(shí) unicode編碼的變量
Python2(了解)
unicode + 指定的coding編碼(str類型)
# coding:gbk a = '中文' # 用gbk編碼存儲(chǔ)了這堆0和1 a = u'中文' # 用unicode編碼存儲(chǔ)了這堆0和1 print(a)
終端是一個(gè)文本編輯器,會(huì)有默認(rèn)編碼.
假設(shè)終端的默認(rèn)編碼是gbk , 認(rèn)識(shí) gbk編碼的變量
假設(shè)終端的默認(rèn)編碼是utf8, 不認(rèn)識(shí) 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)存存取就會(huì)按照指定的字符編碼去入內(nèi)存。解釋或去執(zhí)行時(shí)就要按照指定了的字符編碼去解釋,否則就會(huì)亂碼。 否則可以在定義變量前面加上u,這樣變量就會(huì)以u(píng)nicode編碼存入內(nèi)存。
如:
#coding:gbkname = "爸爸"
但在Python3中就不會(huì)有這樣的問題,因?yàn)闊o論你指定了什么字符編碼,在內(nèi)存存取時(shí)都會(huì)使用Unicode編碼去入內(nèi)存Unicode編碼可以和任意的字符編碼相互轉(zhuǎn)換,并在讀取時(shí)按照所需的編碼區(qū)讀取,這樣就很好解決了字符編碼的問題
以上就是相關(guān)的全部?jī)?nèi)容知識(shí)點(diǎn),感謝大家對(duì)腳本之家的支持。
相關(guān)文章
python之當(dāng)你發(fā)現(xiàn)QTimer不能用時(shí)的解決方法
今天小編就為大家分享一篇python之當(dāng)你發(fā)現(xiàn)QTimer不能用時(shí)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
詳談Python3 操作系統(tǒng)與路徑 模塊(os / os.path / pathlib)
下面小編就為大家分享一篇詳談Python3 操作系統(tǒng)與路徑 模塊(os / os.path / pathlib),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
如何在Python項(xiàng)目中做多環(huán)境配置(環(huán)境變量使用.env文件)
實(shí)際工程開發(fā)中常常會(huì)對(duì)開發(fā)、測(cè)試和生產(chǎn)等不同環(huán)境配置不同的數(shù)據(jù)庫(kù)環(huán)境,傳統(tǒng)方式可以通過添加不同環(huán)境的配置文件達(dá)到部署時(shí)的動(dòng)態(tài)切換的效果,這篇文章主要給大家介紹了關(guān)于如何在Python項(xiàng)目中做多環(huán)境配置的相關(guān)資料,環(huán)境變量使用.env文件,需要的朋友可以參考下2024-06-06
Django imgareaselect手動(dòng)剪切頭像實(shí)現(xiàn)方法
這篇文章主要介紹了Django imgareaselect手動(dòng)剪切頭像實(shí)現(xiàn)方法,實(shí)例分析了Django框架操作圖片的相關(guān)技巧,需要的朋友可以參考下2015-05-05
分享4個(gè)Python中的非常好用的自動(dòng)化腳本
這篇文章為大家準(zhǔn)備了4個(gè)很棒的Python自動(dòng)化腳本,可以解決這些問題。文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-11-11
Python整數(shù)與Numpy數(shù)據(jù)溢出問題解決
這篇文章主要介紹了Python 的整數(shù)與 Numpy 的數(shù)據(jù)溢出,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python 通過可變參數(shù)計(jì)算n個(gè)數(shù)的乘積方法
今天小編就為大家分享一篇python 通過可變參數(shù)計(jì)算n個(gè)數(shù)的乘積方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python+Sklearn實(shí)現(xiàn)異常檢測(cè)
這篇文章主要為大家詳細(xì)介紹了Python如何利用Sklearn實(shí)現(xiàn)異常檢測(cè),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-12-12

