[Zope] *Error Type: UnicodeDecodeError*

Dieter Maurer dieter at handshake.de
Fri Mar 18 14:40:02 EST 2005


jose wrote at 2005-3-18 11:44 +0100:
> ...
>I have a PythonScript like this, to list the village names in serbian 
>language, and it works....
> ...
># print container.mescat('city: ') + data[0]['head'][j][5]
> ...
>If I change the script like this one, it doesn't work anymore:
> ...
>print container.mescat('city: ') + data[0]['head'][j][5]
> ...
>but I have instead the following error:
>
>*Error Type: UnicodeDecodeError*
>*Error Value: 'ascii' codec can't decode byte 0xc5 in position 5: 
>ordinal not in range(128)

Apparently "mescat('city: ')" returns unicode.
This forces all strings combined with it to be converted to unicode.
Python uses its "defaultencoding" for this conversion (default: "ascii").

Because your "data[0]..." contains serbian characters, they
cannot be decoded using "ascii".


Your options:

     *  use the "unicode" function to convert "data[0]..."
        to unicode.

	You must provide the correct encoding as second
	argument (otherwise, you get the same error).

     *  change Python's "defaultencoding" with
        "sys.setdefaultencoding(the_encoding)".

        This is only possible at startup (usually done
	in "sitecustomize.py".

	Unicode fanatics do not like this solution...

-- 
Dieter


More information about the Zope mailing list