On Sat, 15 Nov 2008 14:12:42 +0100, Gilles Ganault wrote: > On Fri, 14 Nov 2008 17:39:00 +0100, "Martin v. Löwis" > <[EMAIL PROTECTED]> wrote: >>Can you first please report what happened when you add the print >>statement? > > Thanks guys, I found how to handle this: > > =========== > for id in rows: > #Says Unicode, but it's actually not > #print type(id[1]) > #<type 'unicode'>
If it says `unicode` *it is* `unicode`. > try: > print id[1]; > except UnicodeEncodeError: > print "Not unicode" But it *is* `unicode` if `type()` says so! Your code still fails when ``id[1]`` can't be encoded in `sys.encoding`, 'iso8859-15', or 'cp1252'. Even worse: The output may be even encoded in different encodings this way. That's garbage you can't decode properly with one encoding anymore. A clean solution would be just one ``print`` with a call of `encode()` and an explicit encoding. I'd use 'utf-8' as default but give the user of the program a possibility to make another choice. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list