Yes, the only difference in my example was that strings were printed by
interpreter, not by print.
The question is: why these strings are returned as byte strings? If they
are encoded as utf-8 by default, why not return unicode typed strings?
If I'm not mistaken, it was default behaviour before. Or maybe I confused
it with strings returned by json field type.

2015-11-14 16:48 GMT+03:00 Paolo Valleri <[email protected]>:

> I tried to run the following (test.py) with the latest stable web2py
> (i.e.: python web2py.py -S welcome -R test.py)
> db = DAL('sqlite:///tmp/storage.sqlite')
> db.define_table('unicode_test', Field('test', 'string'))
> test_val = unicode('på Facebook', 'utf-8')
> db.unicode_test.insert(test=test_val)
> db.commit()
>
> for r in db(db.unicode_test).select():
>     print r.test, type(r.test)
>
> print db.unicode_test[1].test
>
> I got
>
> på Facebook <type 'str'>
> på Facebook
>
> Paolo
>
>
> On Thursday, November 12, 2015 at 8:03:25 PM UTC+1, Dandelion Mine wrote:
>>
>> 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 a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/1bAU_OUbHQQ/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to