Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UnicodeEncodeError: 'ascii' codec can't encode character at special name [duplicate]

My python (ver 2.7) script is running well to get some company name from local html files but when it comes to some specific country name, it gives this error "UnicodeEncodeError: 'ascii' codec can't encode character"

Specially getting error when this company name comes

Company Name: Kühlfix Kälteanlagen Ing.Gerhard Doczekal & Co. KG

The link cannot be processed

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) 

Error gives in this line of 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) 
like image 273
rhb1 Avatar asked Jun 30 '15 11:06

rhb1


2 Answers

Try setting the system default encoding as utf-8 at the start of the script, so that all strings are encoded using that.

Example -

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

The above should set the default encoding as utf-8 .

like image 131
Anand S Kumar Avatar answered Sep 21 '22 07:09

Anand S Kumar


You really want to do this

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

This is the "encode late" strategy described in this unicode presentation (slides 32 through 35).

like image 24
David Cullen Avatar answered Sep 17 '22 07:09

David Cullen