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í)行情況
代碼詳情 | 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(wú)論你指定了什么字符編碼,在內(nèi)存存取時(shí)都會(huì)使用Unicode編碼去入內(nèi)存Unicode編碼可以和任意的字符編碼相互轉(zhuǎn)換,并在讀取時(shí)按照所需的編碼區(qū)讀取,這樣就很好解決了字符編碼的問題
以上就是相關(guān)的全部?jī)?nèi)容知識(shí)點(diǎn),感謝大家對(duì)腳本之家的支持。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
