0
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

Open 1 Answers 59 Views Education
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

Currently I am working on this code:

customer_telno = customer.find('div', 'customer_phone_number')

customer_telno = '' if customer_telno is None else customer_telno.contents[0]

p.customer_info = str(customer_phone + ' ' + customer_telno).strip()

When the above snippet is run I get UnicodeEncodeError :

Traceback (most recent call last):

File "foobar.py", line 792, in <module>

    p.customer_info = str(customer_phone + ' ' + customer_telno).strip()

 UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

I have tried using everything possible but couldn’t find anything which works consistently.

Can anyone solve this problem?

1 Answer

0
This error is occurring mainly because you are converting unicode to encoded bytes using str, so to solve the problem you need to stop str and instead use .encode() to properly encode the strings.

Syntax-

str.encode(encoding="utf-8",errors="strict")

It returns a encoded version of a string as a bytes object.

Here, an error is set to specify different error handling scheme and by default, the error is set to “strict” which means that the encoding error raises a UnicodeError, the default encoding is set to “utf-8”.

 Using .encode() in your code:

p.customer_info = u' '.join((customer_phone, customer_telno)).encode('utf-8').strip()
by (54.6k points)
...