解決Python2中文ascii編碼的方法


YiiChina簽到的時候,經常會看到有人在說說里面發群主是最帥的,yii 是 PHP 最好的框架,沒有之一,就想到使用一言,在每天簽到的時候也發一句話

同時使用方糖將內容推送到微信,防止有什么不對的內容,方便上去修改

昨天晚上抽空搞得時候,發現報錯了:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

再三確認文件頭含有# coding=utf-8,沒問題啊

經過搜索,發現應該是因為Python2.x的默認編碼是ascii,而代碼中可能由utf-8的字符導致,解決方法是設置utf-8

使用Python自帶模塊sys修改編碼

sys.getdefaultencoding() # 獲取系統當前編碼,一般默認為 ascii sys.setdefaultencoding() # 設置系統默認編碼

所以在代碼中的import后增加下面幾行代碼:

import sys
if sys.getdefaultencoding() != 'utf-8': reload(sys) sys.setdefaultencoding('utf-8')

加了一個reload(sys)是因為Python2.x初始化后會刪除sys.setdefaultencoding這個方法,我們需要重新載入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM