Python3: UnicodeEncodeError: 'ascii' codec can't encode character '\xfc'

Hans Bondoka picture Hans Bondoka · Aug 10, 2016 · Viewed 29.9k times · Source

I'am trying to get running a very simple example on OSX with python 3.5.1 but I'm really stucked. Have read so many articles that deal with similar problems but I can not fix this by myself. Do you have any hints how to resolve this issue?

I would like to have the correct encoded latin-1 output as defined in mylist without any errors.

My code:

# coding=<latin-1>

mylist = [u'Glück', u'Spaß', u'Ähre',]
print(mylist)

The error:

Traceback (most recent call last):
File "/Users/abc/test.py", line 4, in <module>
print(mylist)
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 4: ordinal not in range(128)

How I can fix the error but still get something wrong with stdout (print):

mylist = [u'Glück', u'Spaß', u'Ähre',]
    for w in mylist:
        print(w.encode("latin-1"))

What I get as output:

b'Gl\xfcck'
b'Spa\xdf'
b'\xc4hre'

What 'locale' shows me:

LANG="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_CTYPE="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_ALL=

What -> 'python3' shows me:

Python 3.5.1 (default, Jan 22 2016, 08:54:32) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

Answer

markhor picture markhor · Dec 19, 2016

Try running your script with explicitly defined PYTHONIOENCODING environment variable:

PYTHONIOENCODING=utf-8 python3 script.py