Unicode string formating

Diez B. Roggisch deets at nospam.web.de
Fri Nov 30 10:00:13 EST 2007


nico schrieb:
> Hi,
> I need to do a lot of string formating, and I have strings and/or
> unicode strings and when I do the following:
> "%s %s" % (u'Salut', 'H\xe4llo'), I get an exception :
> UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position
> 1: ordinal not in range(128)
> 
> How can I insure I don't get an exception?

By not mixing unicode and str together. Either you decode your str to 
become unicode objects using the proper encoding - or you encode the 
unicode-objects before:


string = "a string"

u_string = string.decode("ascii") # or whatever you need

print u"%s %s" % (u'Salut', u_string)

Or:

salut_string = u"Salut".encode("utf-8") # whatever encoding you need


print u"%s %s" % (salut_string, "foo")

Diez



More information about the Python-list mailing list