Unicode in writing to a file
Diez B. Roggisch
deets at nospam.web.de
Thu Apr 23 08:21:13 EDT 2009
Carbon Man wrote:
> Py 2.5
> Trying to write a string to a file.
> self.dataUpdate.write(u"\nentry."+node.tagName+ u" = " + cValue)
> cValue contains a unicode character. node.tagName is also a unicode string
> though it has no special characters in it.
> Getting the error:
> UnicodeEncodeError: 'ascii' codec can't encode character u'\x93' in
> position 22: ordinal not in range(128)
Please don't confuse utf-8 with unicode. The former is an encoding of the
latter. Which is a crucial difference, as something being encoded (either
in utf-8 or any other encoding) needs to be *decoded* before being dealt
with in python as unicode-object.
Which is what's causing your troubles here. cValue is a *byte*string
containing some non-ascii-characters.
If you are sure cValue is utf-8-encoded, you can do
u" = " + cValue.decode("utf-8")
to remedy the problem.
Diez
More information about the Python-list
mailing list