Python2.x的中文顯示方法

Python的默認(rèn)編碼

Python在安裝時(shí),默認(rèn)的編碼是ascii,當(dāng)程序中出現(xiàn)非ascii編碼時(shí),Python的處理常常會(huì)報(bào)這樣的錯(cuò):

UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),

Python沒(méi)辦法處理費(fèi)ascii編碼的,此時(shí)需要自己設(shè)置將Python的默認(rèn)編碼,一般設(shè)置為utf-8的編碼格式。
查詢系統(tǒng)默認(rèn)編碼可以在解釋器中輸入以下命令:

>>> import sys
>>> sys.getdefaultencoding() 
'ascii'

臨時(shí)更改編碼

設(shè)置默認(rèn)編碼時(shí)使用:

>>> sys.setdefaultencoding('utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'

發(fā)現(xiàn)報(bào)錯(cuò)。
需要先執(zhí)行reload(sys),再執(zhí)行以上命令就可以順利通過(guò)了:

>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('utf8')
>>> sys.getdefaultencoding()
'utf8'

此時(shí)在執(zhí)行sys.getdefaultencoding()就會(huì)發(fā)現(xiàn)編碼已經(jīng)被設(shè)置為utf8的了,但是在解釋器里修改的編碼只能保證當(dāng)次有效,在重啟解釋器后,會(huì)發(fā)現(xiàn),編碼又被重置為默認(rèn)的ascii了,那么有沒(méi)有辦法一次性修改程序或系統(tǒng)的默認(rèn)編碼呢?

兩種方法設(shè)置Python的默認(rèn)編碼

1、在程序中加入以下代碼:

import sys 
reload(sys) 
sys.setdefaultencoding('utf8')  

2、在python的Lib\site-packages文件夾下新建一個(gè)sitecustomize.py,內(nèi)容為:

# encoding=utf8 

import sys   
reload(sys) 
sys.setdefaultencoding('utf8')  

重啟python解釋器,執(zhí)行sys.getdefaultencoding(),發(fā)現(xiàn)編碼已經(jīng)被設(shè)置為utf8的了,多次重啟之后,效果相同,這是因?yàn)橄到y(tǒng)在python啟動(dòng)的時(shí)候,自行調(diào)用該文件,設(shè)置系統(tǒng)的默認(rèn)編碼,而不需要每次都手動(dòng)的加上解決代碼,屬于一勞永逸的解決方法。

還有一種解決方案是在程序中所有涉及到編碼的地方,強(qiáng)制編碼為utf8,即添加代碼encode("utf8"),這種方法并不推薦使用,因?yàn)橐坏┥賹懸粋€(gè)地方,將會(huì)導(dǎo)致大量的錯(cuò)誤報(bào)告.

ps:方法2中,如何找到python的Lib\site-packages文件夾?方法如下:

>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
 '/Library/Python/2.7/site-packages']

可以看到,最后一個(gè)即為我們要尋找的文件夾路徑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符集和編碼簡(jiǎn)介 在編程中常??梢砸?jiàn)到各種字符集和編碼,包括ASCII,MBCS,Unicode等字符集。確切的說(shuō)...
    蘭山小亭閱讀 9,078評(píng)論 0 13
  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號(hào) 簡(jiǎn)介有稍微接觸python的人就會(huì)知道,python中...
    ayuLiao閱讀 3,388評(píng)論 1 5
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,792評(píng)論 1 118
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,538評(píng)論 19 139
  • 如果storyboard中的init mainviewcontroller 前面打勾沒(méi)有去掉。又在didLaunc...
    這評(píng)論有毒閱讀 317評(píng)論 0 0

友情鏈接更多精彩內(nèi)容