Python/environment problem with char encoding/decoding

Peter Otten __peter__ at web.de
Wed Feb 18 09:12:02 EST 2009


Gabriel Rossetti wrote:

> Hello everyone,
> 
> I originally posted this on the Twisted mailing list, but now it seams
> to be  a more general python/environment problem. If I run the attached
> example in Eclipse, it works, if I run it from a terminal, it doesn't, I
> get :
> 
> $ python xml_parser_test.py
> Traceback (most recent call last):
>   File "xml_parser_test.py", line 30, in <module>
>     res = rawXmlToElement("<t>reçu</t>")
>   File "xml_parser_test.py", line 21, in __call__
>     tmp.addRawXml(s)
>   File "/usr/lib/python2.5/site-packages/twisted/words/xish/domish.py",
> line 538, in addRawXml
>     self.children.append(SerializedXML(rawxmlstring))
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5:
> ordinal not in range(128)
> 
> Does anyone understand why it doesn't work outside of Eclipse? My OS is
> Linux (Ubuntu 8.04).

On the contrary, I don't understand why it would work in Eclipse ;)

addRawXml(s) seems to be a fancy way to create a unicode string, and
unicode(s) will work either if s is a bytestring that doesn't contain any
non-ascii characters or if s is a unicode string (at least these are the
relevant cases here).

Try changing your program to use a unicode literal:

# -*- coding: utf-8 -*-
...
if ...
    res = rawXmlToElement(u"<t>reçu</t>")

Peter



More information about the Python-list mailing list