Lalo> These strings may be the result of running some non-string objects Lalo> trough str(foo) - but, we are making no assumptions about these Lalo> objects. Just that str(foo) is somehow meaningful. And, to my Lalo> knowledge, there are no python objects for which str(foo) doesn't Lalo> work.
Unicode objects can't always be passed to str():
>>> str(u"abc") 'abc' >>> p = u'Scr\xfcj MacDuhk' >>> str(p) Traceback (most recent call last): File "<stdin>", line 1, in ? UnicodeError: ASCII encoding error: ordinal not in range(128)
(My default encoding is "ascii".)
You need to encode Unicode objects using the appropriate charset, which may not always be the default.