Especially inside of a python module intended to be imported by others.
There's a very good reason why the defaultencoding is removed from the Python namespace and you have to resort to hackery to access it.
http://ziade.org/2008/01/08/syssetdefaultencoding-is-evil/
As the other poster said, just move to Python 3 and stop worrying about this mess.
Or you could use Python 3 and stop worrying.
[1] http://www.python.org/dev/peps/pep-0263/
I agree that setting global state is a bad idea. However, client satisfaction is more important than a temporary hack.
Especially inside of a python module intended to be imported by others.
There's a very good reason why the defaultencoding is removed from the Python namespace and you have to resort to hackery to access it.
You should be handling encode/decode explicitly; not resorting to changing the default system encoding. You will break other consumers.As the other poster said, just move to Python 3 and stop worrying about this mess.