python exceptions.UnicodeDecodeError:’ascii’编解码器无法解码字节0xa7

前端之家收集整理的这篇文章主要介绍了python exceptions.UnicodeDecodeError:’ascii’编解码器无法解码字节0xa7前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用scthon与 python,我在 python项目pipline中有这个代码
  1. def process_item(self,item,spider):
  2. import pdb; pdb.set_trace()
  3. ID = str(uuid.uuid5(uuid.NAMESPACE_DNS,item['link']))

我收到了这个错误

  1. Traceback (most recent call last):
  2. File "C:\Python27\lib\site-packages\scrapy-0.20.2-py2.7.egg\scrapy\mid
  3. dleware.py",line 62,in _process_chain
  4. return process_chain(self.methods[methodname],obj,*args)
  5. File "C:\Python27\lib\site-packages\scrapy-0.20.2-py2.7.egg\scrapy\uti
  6. ls\defer.py",line 65,in process_chain
  7. d.callback(input)
  8. File "C:\Python27\lib\site-packages\twisted\internet\defer.py",line 3
  9. 82,in callback
  10. self._startRunCallbacks(result)
  11. File "C:\Python27\lib\site-packages\twisted\internet\defer.py",line 4
  12. 90,in _startRunCallbacks
  13. self._runCallbacks()
  14. --- <exception caught here> ---
  15. File "C:\Python27\lib\site-packages\twisted\internet\defer.py",line 5
  16. 77,in _runCallbacks
  17. current.result = callback(current.result,*args,**kw)
  18. File "General_Spider_code_version_2\pipelines.py",line 7,in process_
  19. item
  20. ID = str(uuid.uuid5(uuid.NAMESPACE_DNS,item['link']))
  21. File "C:\Python27\lib\uuid.py",line 549,in uuid5
  22. hash = sha1(namespace.bytes + name).digest()
  23. exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xa7 in p
  24. osition 1: ordinal not in range(128)

我试图调试项目[‘link’]

这就是结果

  1. -> ID = str(uuid.uuid5(uuid.NAMESPACE_DNS,item['link']))
  2. (Pdb) item['link']
  3. u'http://dubai.dubizzle.com/property-for-rent/residential/apartmentflat/2014/4/6
  4. /palm-jumeirah-abu-keibal-3-br-maid-partial-2/?back=ZHViYWkuZHViaXp6bGUuY29tL3By
  5. b3BlcnR5LWZvci1yZW50L3Jlc2lkZW50aWFsL2FwYXJ0bWVudGZsYXQv&pos=1'
  6. (Pdb)

如你所见,项目[‘link’]是unicode

EDIT1

当我将项目[‘link’]更改为任何其他属性(如item [‘date’]时,代码完美无缺

解决方法

使用.encode(‘utf-8’)将unicode字符串编码为字节字符串,它应该工作:
  1. str(uuid.uuid5(uuid.NAMESPACE_DNS,item['link'].encode('utf-8')))

猜你在找的Python相关文章