From: Glenn M. <gle...@gm...> - 2008-01-07 17:35:46
|
Ok, so I am lost. The debugger is not too much help at this point. I assume this setup should work so we can go from there. -----CUT--------- #!/usr/bin/python # -*- coding: utf-8 -*- import os, sys, glob MySQLdb from sqlobject import * sqlhub.processConnection =3D connectionForURI('mysql://test:test@localhost /test?charset=3Dutf8&use_unicode=3D1 class Temp(SQLObject): class sqlmeta: table =3D "temp" fromDatabase =3D True def add(label): return Temp(label=3Dlabel) add =3D staticmethod(add) a =3D 'Ch=E8rie' t =3D Temp.add(a) print 'Done' This fails, can you give me any advise on where to look or how to debug? Thanks Glenn On Jan 7, 2008 11:59 AM, Oleg Broytmann <ph...@ph...> wrote: > On Mon, Jan 07, 2008 at 11:43:24AM -0500, Glenn MacGregor wrote: > > It looks like somewhere in SQLObject we are calling decode on the > variable > > which contains Ch?rie to decode it to ascii. Is this the intended > result? > > No, "decoding" in Python means converting from str to unicode. Somewher= e > (in UnicodeStringValidator in col.py) the string is decoded from str usin= g > utf-8 charset, but the decoding fails. > > > I have tried to manually define the column in the class definition, > > > > label =3D UnicodeCol() > > > > This did not change anything > > Of course. Setting "use_unicode" in DB URI changes every StringCol to > UnicodeCol. > You can declare it StringCol explicitly, and then use only str, not > unicode. > > > I have tracked it down to the return statement of the > StringLikeConverter, > > line 96 on converters.py. return "'%s'" % value seems to be doing a > decode > > (or encode) which is failing. > > I doubt it. At the time the converter works unicode should be converted > to str already. > > > Note in the debugger I see the type of the > > param value in that function is str, I would think it would be unicode. > > UnicodeStringValidator.from_python() has converted it to str. > > Oleg. > -- > Oleg Broytmann http://phd.pp.ru/ ph...@ph... > Programmers don't die, they just GOSUB without RETURN. > |