I have many "can't encode" and "can't decode" problems with Python when I run my applications from the console. But in the Eclipse PyDev IDE, the default character encoding is set to UTF-8, and I'm fine.
I searched around for setting the default encoding, and people say that Python deletes the
sys.setdefaultencoding function on startup, and we can not use it.
So what's the best solution for it?
Here is a simpler method (hack) that gives you back the
setdefaultencoding() function that was deleted from
import sys # sys.setdefaultencoding() does not exist, here! reload(sys) # Reload does the trick! sys.setdefaultencoding('UTF8')
This is not a safe thing to do, though: this is obviously a hack, since
sys.setdefaultencoding() is purposely removed from
sys when Python starts. Reenabling it and changing the default encoding can break code that relies on ASCII being the default (this code can be third-party, which would generally make fixing it impossible or dangerous).
If you get this error when you try to pipe/redirect output of your script
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
Just export PYTHONIOENCODING in console and then run your code.