Thread: [SQLObject] Once more: Encoding problems...
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Frank W. <fra...@no...> - 2007-03-13 09:30:22
|
SGVsbG8gR3JvdXAhCgpJIGFtIGhhdmluZyBzb21lIGNoYXJhY3Rlci1zZXQgcHJvYmxlbXMgd2l0 aCBTUUxPYmplY3QgYW5kIE15U1FMZGIKd2l0aGluIGEgdHVyYm9nZWFycyBwcm9qZWN0LgoKbXkg ZHNuOgpzcWxvYmplY3QuZGJ1cmk9Im5vdHJhbnNfbXlzcWw6Ly91c2VyOnBhc3NAbG9jYWxob3N0 L2RhdGFiYXNlP2NoYXJzZXQ9dXRmOCZkZWJ1Zz1UcnVlIgoKbXkgY2xhc3M6CmNsYXNzIGFUZXN0 KFNRTE9iamVjdCk6CmNsYXNzIHNxbG1ldGE6CnRhYmxlPSJhdGVzdF90ZXN0IgoKbmFtZT1Vbmlj b2RlQ29sKGxlbmd0aD0xMDApCgppbiB0aGUgc2hlbGw6Cj4+PiBhVGVzdChuYW1lPSJhYmMiKQoK PGFUZXN0IDFMIG5hbWU9dSdhYmMnPgoKI3RoaXMgb25lIHdhcyBhbHJpZ2h0IEJVVDoKCj4+PiBt ZWluVGVzdChuYW1lPSLDpMO2w7wiKSAjIGNhdXNlczoKClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKKC4uLikKRmlsZSAiL3Vzci9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMv U1FMT2JqZWN0LTAuOC4wLXB5Mi40LmVnZy8Kc3Fsb2JqZWN0L21haW4ucHkiLCBsaW5lIDExMTEs IGluIHNldAp2YWx1ZSA9IHRvX3B5dGhvbihkYlZhbHVlLCBzZWxmLl9TT192YWxpZGF0b3JTdGF0 ZSkKRmlsZSAiL3Vzci9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvU1FMT2JqZWN0LTAuOC4w LXB5Mi40LmVnZy8Kc3Fsb2JqZWN0L2NvbC5weSIsIGxpbmUgNTQ5LCBpbiB0b19weXRob24KcmV0 dXJuIHVuaWNvZGUodmFsdWUsIHNlbGYuZGJfZW5jb2RpbmcpCkZpbGUgIi91c3IvbGliL3B5dGhv bjIuNC9lbmNvZGluZ3MvdXRmXzgucHkiLCBsaW5lIDE2LCBpbiBkZWNvZGUKcmV0dXJuIGNvZGVj cy51dGZfOF9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKVW5pY29kZURlY29kZUVycm9yOiAn dXRmOCcgY29kZWMgY2FuJ3QgZGVjb2RlIGJ5dGVzIGluIHBvc2l0aW9uIDAtMjoKaW52YWxpZCBk YXRhCgpJZiBpIGNoYW5nZSBkc24gYW5kIGFwcGVuZCAiP2NoYXJzZXQ9dXRmOCIgYW5kCj4+PiBt ZWluVGVzdChuYW1lPSLDpMO2w7wiKQplcnJvciB0cmFjZWJhY2sgY2hhbmdlcyB0bzoKKC4uLikK RmlsZSAiL3Vzci9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvU1FMT2JqZWN0LTAuOC4wLXB5 Mi40LmVnZy9zcWxvYmplY3QvY29sLnB5IiwKbGluZSA1NDksIGluIHRvX3B5dGhvbgpyZXR1cm4g dW5pY29kZSh2YWx1ZSwgc2VsZi5kYl9lbmNvZGluZykKRmlsZSAiL3Vzci9saWIvcHl0aG9uMi40 L2VuY29kaW5ncy91dGZfOC5weSIsIGxpbmUgMTYsIGluIGRlY29kZQpyZXR1cm4gY29kZWNzLnV0 Zl84X2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQpVbmljb2RlRGVjb2RlRXJyb3I6ICd1dGY4 JyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZXMgaW4gcG9zaXRpb24gNC02Ogp1bmV4cGVjdGVkIGVu ZCBvZiBkYXRhCgpUaGUgRGF0YWJhc2UsIHRoZSB0YWJsZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcg ZmllbGQgIm5hbWUiIGluIHRoZQp0YWJsZSBoYXZlIHRoZSBjb2xsYXRpb24gInV0ZjhfdW5pY29k ZV9jaSIsIGNoYXJzZXQgInV0ZjgiCgpXaGF0IGNhbiBpIGRvIHRvIHNvbHZlIHRoaXMgcHJvYmxl bT8KClJlZ2FyZHMsIEZyYW5rCg== |
From: Oleg B. <ph...@ph...> - 2007-03-13 10:02:46
|
On Tue, Mar 13, 2007 at 10:30:17AM +0100, Frank Wagner wrote: > >>> meinTest(name="äöü") # causes: > > Traceback (most recent call last): > (...) > File "/usr/lib/python2.4/site-packages/SQLObject-0.8.0-py2.4.egg/ > sqlobject/main.py", line 1111, in set > value = to_python(dbValue, self._SO_validatorState) > File "/usr/lib/python2.4/site-packages/SQLObject-0.8.0-py2.4.egg/ > sqlobject/col.py", line 549, in to_python > return unicode(value, self.db_encoding) > File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode > return codecs.utf_8_decode(input, errors, True) > UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: > invalid data Is "äöü" really an utf-8 string? Can you run >>> unicode("äöü", "utf-8") in the python shell? Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: <ber...@zk...> - 2007-03-13 14:24:13
|
> > I am having some character-set problems with SQLObject and MySQLdb > within a turbogears project. > > my dsn: > sqlobject.dburi=3D"notrans_mysql://user:pass@localhost/database? > charset=3Dutf8&debug=3DTrue" > > my class: > class aTest(SQLObject): > class sqlmeta: > table=3D"atest_test" > > name=3DUnicodeCol(length=3D100) > > in the shell: > >>> aTest(name=3D"abc") > > <aTest 1L name=3Du'abc'> > > #this one was alright BUT: > > >>> meinTest(name=3D"=E4=F6=FC") # causes: IMHO, This should work. My bet would be that your editor or console use= s an encoding different from utf-8. My editor, for example, encodes in latin= -1, and latin-1's =E4=F6=FCs are NOT encoded the same as in utf-8. So, '=E4=F6=FC'.decode('utf-8') yields an error in my console. You could also specify the editor's encoding by setting this line on to= p of your source files: # -!- encoding: latin-1 -!- And then use unicode strings directly: meinTest(name=3Du"=E4=F6=FC") In my experience, this is the safest way of handling string encoding in= python. The downside is that you cannot do "print u'=E4=F6=FC'", since = python tries to encode it to ASCII, which has no place for german umlauts at a= ll. HTH Bernhard ___________________________________________________________________ Disclaimer: Diese Mitteilung ist nur fuer die Empfaengerin / den Empfaenger bestimm= t. Fuer den Fall, dass sie von nichtberechtigten Personen empfangen wird, bitten wir diese hoeflich, die Mitteilung an die ZKB zurueckzusenden un= d anschliessend die Mitteilung mit allen Anhaengen sowie allfaellige Kopi= en zu vernichten bzw. zu loeschen. Der Gebrauch der Information ist verbot= en. This message is intended only for the named recipient and may contain confidential or privileged information. If you have received it in error, please advise the sender by return e-= mail and delete this message and any attachments. Any unauthorised use or dissemination of this information is strictly prohibited.= |
From: Frank W. <fra...@no...> - 2007-03-13 18:42:44
|
SGVsbG8gT2xlZywKCndoYXQgeW91IHJlY2VpdmVkIGFzICLQtNGG0YwiIHdhcyBvcmlnaW5hbGx5 IHRoZSBnZXJtYW4gdW1sYXV0cyAiw6TDtsO8IiBpbgpteSBtZXNzYWdlLi4uCgpsb3N0IGluIHRy YW5zbGF0aW9uLi4uCgpSZWdhcmRzLApGcmFuawo= |
From: Oleg B. <ph...@ph...> - 2007-03-13 18:47:23
|
On Tue, Mar 13, 2007 at 07:42:39PM +0100, Frank Wagner wrote: > what you received as "дць" was originally the german umlauts "??????" in > my message... I switched to utf8-xterm trying to answer your email but anyway mutt converted everything to iso8859-1. Now I am back to koi8-xterm. ;) But you got the idea of my question, so you could try... Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Frank W. <fra...@no...> - 2007-03-13 18:43:38
|
Hello Simon, > Try adding sqlobject_encoding=utf8 to the DSN parameters? This worked just alright! thanks a lot! Regards, Frank |