1.UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
在将中文字符通过write写入txt时出现错误
Traceback (most recent call last):
File "E:/Python/Code/datamining.py", line 26, in <module>
f.write(soup.body.div.find('div',class_='name').contents[0])
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
Unicode编码与ASCII编码的不兼容
Python默认环境编码通过下面的方法可以获取:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
基本上是ascii编码方式,由此Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128))。
注意需要调用一次reload(sys)
否则Python会抛出一个AttributeError异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'setdefaultencoding'
好了,通过上面短短的三行,我们算是很好的解决了这个问题了,同样的方式也可以应用到UnicodeDecodeError上。
网友评论