I tried it on 2.12.3-stable: >>> db = DAL('sqlite://storage.sqlite') >>> db._db_codec 'UTF-8' >>> db.define_table('unicode_test', Field('test', 'string')) <Table unicode_test (id,test)> >>> test_val = unicode('på Facebook', 'utf-8') >>> db.unicode_test.insert(test=test_val) 1L >>> for r in db(db.unicode_test).select(): print r.test, type(r.test) ... på Facebook <type 'str'> >>> db.unicode_test[1].test 'p\xc3\xa5 Facebook' >>> db.unicode_test[1].test.decode('utf-8') u'p\xe5 Facebook'
On Wednesday, November 11, 2015 at 5:52:47 PM UTC+3, Massimo Di Pierro wrote: > > The strings you get are probably UTF8. Can you confirm? > > On Wednesday, 4 November 2015 08:19:41 UTC-6, Dandelion Mine wrote: >> >> Hello! >> According to Web2py book, 'by default web2py uses utf8 character encoding >> for databases'. I get the contrary results: there are fields with type >> 'string', mysql shows that they have collation utf8_general_ci, but when I >> select them with DAL, the type of returned fields are 'str', not 'unicode'. >> >> db.define_table('customers', >> Field('name', 'string')) >> >> +-----------+--------------+-----------------+------ >> | Field | Type | Collation | Null | Key | >> +-----------+--------------+-----------------+------+ >> | name | varchar(512) | utf8_general_ci | >> >> print type(db(db.tradera_customers).select().first().name) >> <type 'str'> >> >> I tried to remove *.table in databases and to use db_codec parameter for >> DAL, but nothing changed. >> >> Web2py version 2.9.11-stable, Python 2.7.9, MySQL ver 14.14 Distrib 5.5.40 >> >> Is it a known bug or I'm doing something wrong? >> Thanks in advance. >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.