web-dev-qa-db-fra.com

UnicodeEncodeError: le codec 'ascii' ne peut pas coder de caractère sous un nom spécial

Mon script python (version 2.7) fonctionne correctement pour obtenir un nom de société à partir de fichiers html locaux, mais s’agissant d’un nom de pays spécifique, le message "UnicodeEncodeError: le codec 'ascii' ne peut pas coder personnage"

Obtenir une erreur particulière lorsque ce nom de société vient

Nom de la société: Kühlfix Kälteanlagen Ing.Gerhard Doczekal & Co. KG

Le lien ne peut pas être traité

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)

Erreur donne dans cette ligne de code:

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)
65
rhb1

Essayez de définir le codage par défaut du système sous la forme utf-8 au début du script, afin que toutes les chaînes soient codées à l'aide de cela.

Exemple -

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

Ce qui précède devrait définir le codage par défaut comme utf-8.

222
Anand S Kumar

Tu veux vraiment faire ça

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

C’est la stratégie de "codage tardif" décrite dans cette présentation unicode (diapositives 32 à 35).

33
David Cullen