On 23/07/13 05:22, Jim Mooney wrote:

I already changed to u for the char, so I got a bigger number, and only
subtracted 3 from umlaut, which should have given me the dos line-drawing
dash, but now my problem is I can't seem to set encoding for that:

import sys
sys.setdefaultencoding('cp437')

gives me the error:

AttributeError: 'module' object has no attribute 'setdefaultencoding'


Don't touch setdefaultencoding. It is hidden for a reason. And if you insist on 
living dangerously, don't set it to weird legacy encodings like cp437.

When Python starts up, it needs to set the encoding used, but you *cannot* set 
it to arbitrary encodings. Setting it to arbitrary encodings can cause all 
sorts of weird, hard to diagnose bugs, so to prevent that, Python deletes the 
setdefaultencoding function after using it.

The documentation is clear that there are no user-serviceable parts here:

http://docs.python.org/2/library/sys.html#sys.setdefaultencoding

And in Python 3 it became a no-op, then finally deleted for good, gone forever, 
and thanks be to feck. http://bugs.python.org/issue9549

Apparently it only exists because when Unicode was first introduced to Python, 
the developers couldn't decide whether to use ASCII, Latin1 or UTF-8 as the 
internal encoding, which just goes to show that even the top Python devs can be 
foolish when it comes to Unicode. So they put in an experimental function to 
set the default encoding, and *literally forgot to remove it* for the public 
release.

(That's according to the Effbot, Fredrik Lundh, one of the early Python 
luminaries.)



--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to