Unicode again ... default codec ...

zooko zookog at gmail.com
Fri Oct 30 12:40:14 EDT 2009


On Oct 20, 9:50 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:

> DON'T do that. Really. Changing the default encoding is a horrible,
> horrible hack and causes a lot of problems.

I'm not convinced.  I've read all of the posts and web pages and blog
entries decrying this practice over the last several years, but as far
as I can tell the actual harm that can result is limited (as long as
you set it to utf-8) and the practical benefits are substantial.  This
is a pattern that I have no problem using:

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

The reason this doesn't cause too much harm is that anything that
would have worked with the original default encoding ('ascii') will
also work with the new utf-8 default encoding.  As far as I've seen
from the aforementioned mailing list threads and blog posts and so on,
the worst thing that has ever happened as a result of this technique
is that something works for you but fails for someone else who doesn't
have this stanza.  (http://tarekziade.wordpress.com/2008/01/08/
syssetdefaultencoding-is-evil/ .)  That's bad, but probably just
including this stanza at the top of the file that you are sharing with
that other person instead of doing it in a sitecustomize.py file will
avoid that problem.

Regards,

Zooko



More information about the Python-list mailing list