2012-03-09 4 views
3

Python бросает это при использовании Wolfram Alpha API:UnicodeEncodeError: 'CharMap' кодек не может кодировать символ

Traceback (most recent call last): 
    File "c:\Python27\lib\threading.py", line 530, in __bootstrap_inner 
    self.run() 
    File "c:\Python27\lib\site-packages\Skype4Py\utils.py", line 225, in run 
    handler(*self.args, **self.kwargs) 
    File "s.py", line 38, in OnMessageStatus 
    if body[0:5] == '!math':wolfram(body[5:], '') 
    File "s.py", line 18, in wolfram 
    print "l: "+l 
    File "c:\Python27\lib\encodings\cp437.py", line 12, in encode 
    return codecs.charmap_encode(input,errors,encoding_map) 
UnicodeEncodeError: 'charmap' codec can't encode character u'\xd7' in position 3 
: character maps to <undefined> 

как я могу решить эту проблему?

ответ

6

Похоже, вы передаете высокобайтные данные в API, и это не нравится, что (\ xd7 является символом «Times», выглядит как X). Я не уверен, для чего предназначена печать, но изменение ее должно быть print "l: " + repr(l) или print "l: ", l, по крайней мере, позволит вам пройти вышеуказанную ошибку, если вы не хотите, чтобы вы занимались преобразованием тела в юникод (I ' м, полагая, что это не ...).

Если это не поможет, нам понадобится более подробная информация. Откуда идет ваш вход? Является ли тело unicode или байтовой строкой? Используете ли вы python 2.7 или 3.x?

+0

это python 2.7, хотя этот поток старый, вы можете видеть, что его доступ к библиотекам python 2.7 для threading.py и т. Д. – franklin

Смежные вопросы