黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

解決Python2.7的UnicodeEncodeError: ‘a(chǎn)scii /archives/629/代碼上面應(yīng)該沒有什么問題,Python使用的是版本2.7,但是在...

系統(tǒng) 2799 0

轉(zhuǎn)載自王曄的流水賬http://wangye.org/blog/archives/629/

            
          

解決Python2.7的UnicodeEncodeError: ‘a(chǎn)scii’ codec can’t encode異常錯誤_第1張圖片

代碼上面應(yīng)該沒有什么問題,Python使用的是版本2.7,但是在運行的時候出現(xiàn)了異常錯誤 UnicodeEncodeError

            
              Traceback (most recent call last):
  File "makedb.py", line 33, in 
    main()
  File "makedb.py", line 30, in main
    fp.write(row[1])
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-78: ordinal not in range(128)

            
          

本來以為數(shù)據(jù)讀取錯誤,我特將fp.write改成print,結(jié)果數(shù)據(jù)全部讀取并顯示在命令控制臺上了,證明代碼是沒有問題的,仔細看了下異常信息,貌似是因為編碼問題:Unicode編碼與ASCII編碼的不兼容,其實這個Python腳本文件是由utf-8編碼的,同時SQlite3數(shù)據(jù)庫存取的也是UTF-8格式,Python默認環(huán)境編碼通過下面的方法可以獲取:



基本上是ascii編碼方式,由此Python自然調(diào)用ascii編碼解碼程序去處理字符流,當字符流不屬于ascii范圍內(nèi),就會拋出異常(ordinal not in range(128))。

解決的方案很簡單,修改默認的編碼模式,很多朋友會想到setdefaultencoding,是的,我們可以通過 sys.setdefaultencoding(‘utf-8’) 來將當前的字符處理模式修改為utf-8編碼模式,值得注意的是,如果單純這么調(diào)用的話,Python會拋出一個AttributeError異常:


竟然說sys沒有setdefaultencoding的方法,其實sys是有這個方法的,但是要請出她老人家需要調(diào)用一次 reload(sys) ,很奇怪,是么?如果有誰知道原因的話,還望不吝賜教。

import sys

reload sys

sys.setdefaultencoding('utf-8')

??


好了,通過上面短短的三行,我們算是很好的解決了這個問題了,同樣的方式也可以應(yīng)用到 UnicodeDecodeError 上。當然這個技巧來自于網(wǎng)絡(luò),我還找到其他特別的辦法,但是感覺還是這個比較靠譜,有童鞋說:我們將Python 2.x系列升級到Python 3.x系列就可以了,小小的問題犯不著升級吧,畢竟2到3還是要有個過渡的。

最后,我將文章一開始的代碼更改如下:

解決Python2.7的UnicodeEncodeError: ‘a(chǎn)scii’ codec can’t encode異常錯誤_第2張圖片



更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論