Unicode and exception strings
Terry Carroll
carroll at tjc.com
Fri Jan 9 14:44:21 EST 2004
On 09 Jan 2004 13:18:39 +0100, Rune Froysa <rune.froysa at usit.uio.no>
wrote:
>Assuming an exception like:
>
> x = ValueError(u'\xf8')
>
>AFAIK the common way to get a string representation of the exception
>as a message is to simply cast it to a string: str(x). This will
>result in an "UnicodeError: ASCII encoding error: ordinal not in
>range(128)".
>
>The common way to fix this is with something like
>u'\xf8'.encode("ascii", 'replace'). However I can't find any way to
>tell ValueErrors __str__ method which encoding to use.
Rune, I'm not understanding what your problem is.
Is there any reason you're not using, for example, just repr(u'\xf8')?
In one program I have that occasionally runs into a line that includes
some (UTF-8) Unicode-encoded Chinese characters , I have something like
this:
try:
_display_text = _display_text + "%s\n" % line
except UnicodeDecodeError:
try:
# decode those UTF8 nasties
_display_text = _display_text + "%s\n" % line.decode('utf-8'))
except UnicodeDecodeError:
# if that still doesn't work, punt
# (I don't think we'll ever reach this, but just in case)
_display_text = _display_text + "%s\n" % repr(line)
I don't know if this will help you or not.
More information about the Python-list
mailing list