it-roy-ru.com

UnicodeEncodeError: кодек «ascii» не может кодировать символ со специальным именем

Мой сценарий python (версия 2.7) работает хорошо, чтобы получить название какой-либо компании из локальных html-файлов, но когда речь идет о каком-то конкретном названии страны, он выдает эту ошибку "UnicodeEncodeError: кодек" ascii "не может кодировать персонаж"

Специально получаю ошибку, когда приходит название этой компании

Название компании: Kühlfix Kälteanlagen Ing.Gerhard Doczekal & Co. KG

Ссылка не может быть обработана

Traceback (most recent call last): 
  File "C:\Python27\Process2.py", line 261, in <module>
    flog.write("\nCompany Name: "+str(pCompanyName))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 9: ordinal not in range(128)

Ошибка в этой строке кода:

if companyAlreadyKnown == 0:
   for hit in soup2.findAll("h1"):
       print "Company Name: "+hit.text
       pCompanyName = hit.text
       flog.write("\nCompany Name: "+str(pCompanyName))
       companyObj.setCompanyName(pCompanyName)
64
rhb1

Попробуйте задать системную кодировку по умолчанию как utf-8 в начале скрипта, чтобы все строки кодировались с использованием этого.

Пример -

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Выше следует установить кодировку по умолчанию как utf-8.

220
Anand S Kumar

Вы действительно хотите сделать это

flog.write("\nCompany Name: "+ pCompanyName.encode('utf-8'))

Это стратегия "позднего кодирования", описанная в этом презентация в юникоде (слайды с 32 по 35).

32
David Cullen