2015-12-02 76 views
-1

我遇到了臭名昭着的UnicodeEncodeError。在发布这里之前,我已经研究了很多关于这个错误的信息,显然这个错误有多个版本。UnicodeEncodeError:'ascii'编解码器无法编码字符u' xa3'在位置619:序号不在范围内(128)

这里是我的代码:

import nltk,re,pprint 
import geograpy 
import codecs 
from nameparser.parser import HumanName 

text_file = codecs.open('H:/Study and Work/Marciano Asstship/Work/Incident_cards_data/2.Text Extracted/Boxes 1 - 21/Boxes 8 thru 21-TULE LAKE/Box9-TULE LAKE/box9.txt',encoding = 'utf-8') 
text_data = text_file.read() 

places = geograpy.get_place_context(text_data) 
print places 

和这里的错误:

log.debug('%s on %s' % (e, url)) 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 619: ordinal not in range(128) 
+0

是什么让你的情况与这个确切问题的其他答案完全不同?这些其他解决方案以何种方式无法解决您的问题? –

+0

在所有其他情况下,使用'utf-8'编码解决了这个问题。在我的情况下,如果我使用utf-8进行编码,那么我会得到上述错误,如果我使用utf-8进行解码,则会得到UnicodeDecodeError。我也尝试了其他一些编码,但似乎没有任何工作。 –

回答

0

eurl是Unicode字符串,这使得传递给log.debug Unicode字符串生成的字符串。例子:

>>> '%s %s' % ('abc','def') 
'abc def' 
>>> '%s %s' % (u'abc','def') 
u'abc def' 
>>> '%s %s' % ('abc',u'def') 
u'abc def' 
>>> '%s %s' % (u'abc',u'def') 
u'abc def' 

可能的log.debug不指望Unicode字符串,所以Python 2暗中将其转换为使用默认ascii编解码器的字节字符串。生成的Unicode字符串不是ASCII兼容的,因此UnicodeEncodeError

相关问题