python2 ‘ascii‘ codec can‘t encode / decode 错误
程序员文章站
2022-04-12 08:41:10
参考:Python 2.x 中的 ‘ascii’ codec can’t encode / decode 错误用Python 2.x会经常碰到一个错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)原因:在Python中把一个Unicode类转化为 0 和 1 的过程叫做Encoding。 把 0 和 1 反转为Unicode类的过程叫做Deco...
参考:Python 2.x 中的 ‘ascii’ codec can’t encode / decode 错误
用Python 2.x会经常碰到一个错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
原因:在Python中把一个Unicode类转化为 0 和 1 的过程叫做Encoding。 把 0 和 1 反转为Unicode类的过程叫做Decoding。
在Python 2.7版本里,ASCII是默认的Encoding和Decoding的方法。
具体理解,参考上面链接。这里讲解如何解决问题:
原来:
def get_make(lists):
if len(lists[-1]) >= 29 and lists[-1] is not None:
return str(lists[-1][9])
else:
return '-'
报错:
File "/home/marq/IFSClickThroughDataProcessTaskNew.py", line 67, in get_make
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
解释:无法用默认的ASCII编码Decode lists[-1][9],因为这个文字的数值已经超过了0 - 127这个范围。原因,str()中喂入python默认的ASCII码字符,而这里喂入的是Unicode字符,故去掉str,因本身就是string,无需用str来转换,省的格式不匹配:
def get_make(lists):
if len(lists[-1]) >= 29 and lists[-1] is not None:
return lists[-1][9] # 去掉str,理由python2.X默认是ascii
else:
return '-'
本文地址:https://blog.csdn.net/Scarlett_ma/article/details/107320202
推荐阅读
-
UnicodeEncodeError: 'ascii' codec can't encode characters in position
-
RLException: Invalid <node> tag: ‘ascii‘ codec can‘t decode byte 0xe6报错
-
Anaconda中启动Python时的错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 553
-
UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xcb in position 260: ordinal not in range(128)
-
命令行调用python出现编码错误:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x9a in position 140 完美解决!
-
Python2.7更新pip:UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 7: ordinal not in range(128)
-
Python “'ascii' codec can't decode byte 0xb0i in position 1” 的解决方法
-
真正解决Windows下UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xff in position 0错误的方法
-
当在命令行中执行virtualenv venv时报此错误:'utf-8' codec can't decode byte 0xd5 in position 38: invalid continuation by
-
python 运行 execjs 出现错误 UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\ufffd‘