亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python中的編碼知識整理匯總

2020-01-04 17:48:24
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python中的編碼知識整理匯總的相關資料,需要的朋友可以參考下
 

問題

在平時工作中,遇到了這樣的錯誤:

UnicodeDecodeError: 'ascii' codec can't decode byte

想必大家也都碰到過,很常見 。于是決定對python的編碼做一個整理和學習。

基礎知識

在python2.x中,有兩種數據類型,unicode和str,這兩個都是basestring的子類

>>> a = '中'>>> type(a)<type 'str'>>>> isinstance(a,basestring)True>>> a = u'中'>>> type(a)<type 'unicode'>>>> isinstance(a,basestring)True

兩者的區別,概括來講,str是字節串,由unicode經過編碼(encode)后的字節組成的(好比與python3.x的byte);unicode是對象,才是真正意義上的字符串,由字符組成

>>> a='中文'>>> len(a)6>>> repr(a)"'//xe4//xb8//xad//xe6//x96//x87'">>> b=u'中文'>>> len(b)2>>> repr(b)"u'//u4e2d//u6587'"

控制臺和腳本

在linux下的python控制臺執行以下命令,所得的結果和執行腳本是不同的

>>> a = u'中文'>>> repr(a)"u'//xe4//xb8//xad//xe6//x96//x87'">>> b = unicode('中文','utf-8')b)>>> repr(b)"u'//u4e2d//u6587'"

可以看到,u'中文'初始化的對象a不是我們所期望的,那究竟是什么原因呢?
將python看成是一根管子,管子里頭處理的中間過程都是使用unicode的。入口處,全部轉成unicode;出口處,再轉成目標編碼(當然,有例外,處理邏輯中要用到具體編碼的情況)。
在控制臺執行命令a = u'中文',可以將解釋為命令,a = ‘中文'.decode(encode),從而到到unicode對象a。那么這里的encode是什么呢?對于控制臺來說,就是標準輸入,即sys.stdin.encoding

>>> sys.stdin.encoding'ISO-8859-1'

我的這邊控制臺默認的編碼是ISO-8859-1,故a = u'中文' <=> a = '中文'.decode('ISO-8859-1')
這里的'中文'是控制臺理解的,即使根據終端編碼方式編碼后的字節碼,對于utf-8編碼的終端,'中文'='//xe4//xb8//xad//xe6//x96//x87'

>>> a='中文'.decode('ISO-8859-1') >>> repr(a)"u'//xe4//xb8//xad//xe6//x96//x87'"

那如何修改此編碼值呢,設置為什么呢?在linux環境中設置環境變量方法如下,具體設置什么只要與終端編碼方式一直即可

export PYTHONIOENCODING=UTF-8

總結

重新回到最初的那個問題,造成問題的原因是沒有搞清楚unicode和str的區別,將兩者進行了混用。

>>> a = '中文'>>> a.encode('gbk')Traceback (most recent call last): File "<stdin>", line 1, in <module>UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

以上的對象a其實是str,即字節碼,若終端是utf-8編碼的話,那么a就是用utf-8 encode的字節碼。a.encode('gbk') 等價于a.decode(encoding).encode('gbk'),即先將字節碼解碼為unicode字符,然后再encode為字節碼。unicode對象作為中轉站。那么這里的encoding是什么呢?

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

默認是ascii,這正是錯誤為什么報無法用ascii解碼的原因

>>> reload(sys)<module 'sys' (built-in)>>>> sys.setdefaultencoding('utf-8')>>> a = '中文'>>> repr(a)"'//xe4//xb8//xad//xe6//x96//x87'">>> a.encode('gbk')'/xd6/xd0/xce/xc4'

將默認編碼改為utf-8,即可。不鼓勵對str使用encode方法,因為其中隱式對str進行了解碼。decode只對str,encode只對unicode,一切decode/encode都顯示指定編碼方式。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品欧美aⅴ在线网站| 欧美性色xo影院| 欧美日韩在线视频观看| 日韩视频欧美视频| 欧美福利小视频| 久久亚洲精品小早川怜子66| 疯狂蹂躏欧美一区二区精品| 欧美激情在线观看视频| 亚洲电影免费观看高清完整版在线| 久久av红桃一区二区小说| 国产精品人人做人人爽| 国产日韩欧美在线| 国产精品吊钟奶在线| 欧美肥老妇视频| 久久伊人精品一区二区三区| 色吧影院999| 精品自拍视频在线观看| 这里只有精品视频在线| 久久全国免费视频| 91久久精品美女高潮| 黄网站色欧美视频| 欧美精品福利视频| 亚洲a∨日韩av高清在线观看| 日韩av免费在线播放| 日韩免费中文字幕| 秋霞av国产精品一区| 久久久视频免费观看| 91精品国产色综合| 国产精品日韩在线一区| 日韩免费av一区二区| 久久久人成影片一区二区三区| 九九热最新视频//这里只有精品| 色偷偷噜噜噜亚洲男人| 57pao成人国产永久免费| 成人在线国产精品| 亚洲一区制服诱惑| 日韩欧亚中文在线| 91精品视频专区| 欧美精品在线免费播放| 亚洲欧美在线播放| 欧美性在线观看| 久久成人这里只有精品| 亚洲aaaaaa| 黑人精品xxx一区一二区| 欧美日韩免费区域视频在线观看| 亚洲精品国产精品国产自| 国产精品美乳一区二区免费| 最近中文字幕日韩精品| 欧美性xxxxxxxxx| 欧美性一区二区三区| 欧美一区二区三区免费观看| 精品综合久久久久久97| 成人动漫网站在线观看| 97香蕉久久夜色精品国产| 亚洲第一视频网| 国产一区二区黑人欧美xxxx| 97超碰国产精品女人人人爽| 精品久久久国产| 久久精品视频导航| 国产亚洲综合久久| 日韩在线视频观看正片免费网站| 91精品视频免费观看| 午夜精品久久久久久99热| 欧美成人全部免费| 亚洲欧美日韩另类| 亚洲视频电影图片偷拍一区| 日韩美女av在线| 久久天天躁狠狠躁夜夜躁2014| 欧美午夜精品久久久久久浪潮| 国产一区二区色| 欧美性生交xxxxxdddd| 国产裸体写真av一区二区| 国产日韩精品入口| 成人深夜直播免费观看| 国产精品专区第二| 海角国产乱辈乱精品视频| 亚洲欧美在线免费| 国产精品女主播视频| 国产精品久久久久影院日本| 一个人www欧美| 精品国产欧美一区二区三区成人| 日本成人黄色片| 欧美日韩一区二区三区| 国产专区精品视频| 国产视频久久久| 国产成人精品日本亚洲| 久久99国产综合精品女同| 欧美日韩一区二区精品| 欧美日韩在线影院| 精品一区二区三区四区| 午夜精品一区二区三区在线视| 欧美夫妻性视频| 8x海外华人永久免费日韩内陆视频| 热门国产精品亚洲第一区在线| 成人网在线免费观看| 亚洲综合色激情五月| 久久精品国产亚洲精品2020| 欧美日韩加勒比精品一区| 成人久久一区二区三区| 正在播放国产一区| 91精品国产高清久久久久久久久| 午夜精品久久久久久久白皮肤| 日韩视频在线免费| 亚洲欧洲一区二区三区在线观看| 亚洲成人黄色网址| 欧美一级片久久久久久久| 日韩精品一区二区视频| 国产日韩欧美黄色| 91亚洲精品一区| 国产91精品黑色丝袜高跟鞋| 欧美日韩中文字幕日韩欧美| 日韩亚洲成人av在线| 欧美成年人在线观看| 午夜伦理精品一区| 久久久久久高潮国产精品视| 色综合五月天导航| 57pao国产成人免费| 欧美肥臀大乳一区二区免费视频| 91精品国产高清久久久久久| 久久av.com| 91成人精品网站| 国产成人涩涩涩视频在线观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲影院色在线观看免费| 91视频国产精品| 亚洲精品电影网站| 91精品国产综合久久香蕉的用户体验| 国内精品小视频在线观看| 欧美日韩第一页| 久久99精品久久久久久青青91| 欧美日韩裸体免费视频| 欧美激情视频播放| 亚洲欧洲日产国产网站| 日本高清+成人网在线观看| 精品视频久久久久久久| 欧美肥臀大乳一区二区免费视频| 欧美影院成年免费版| 欧美在线国产精品| 成人激情在线播放| 国产精品久久久久一区二区| 亚洲国产精久久久久久久| 国产精品大陆在线观看| 亚洲性日韩精品一区二区| 欧美人在线观看| 国产精品大陆在线观看| 狠狠躁天天躁日日躁欧美| 亚洲高清久久久久久| 视频在线观看一区二区| 中文字幕在线成人| 国产成人一区二区三区| 欧美第一黄网免费网站| 国产精品免费久久久久久| 亚洲a在线播放| 成人动漫网站在线观看| 国自产精品手机在线观看视频| 久久午夜a级毛片| 国产成人亚洲精品| 51精品国产黑色丝袜高跟鞋| 色久欧美在线视频观看| 精品国产自在精品国产浪潮| 美日韩精品视频免费看| 久久久久久久一区二区三区| 日韩在线视频播放| 久久久亚洲国产|