[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