Ron Garret wrote:

> Is there a way to change the default string encoding used by the
> string.encode() method?  

encode() or decode()? Encoding is best handled by the output stream, e. g.
passing codecs.open(...) instead of the builtin open(...).


> My default environment is utf-8 but I need it 
> to be latin-1 to avoid errors like this:
> 
>>>> 'Andr\xe9 Ramel'.decode()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 4:
> ordinal not in range(128)

If your environment were latin-1, you'd get the same error because Python
assumes ascii by default.
 
> I can't change the code to pass an encoding argument to the decode
> method because it's someone else's code.

Does that code accept unicode strings? Try to pass u"Andre\xe9 Ramel"
instead of the byte string.

If all else fails there's

>>> sys.setdefaultencoding("latin1")
>>> "Andre\xe9 Ramel".decode()
u'Andre\xe9 Ramel'

but that's an evil hack, you should rather talk to the maintainer of the
offending code to update it to accept unicode.

Peter
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to