开发者

Python, mysqldb and unicode

I'm having trouble to get unicode values out of mysql queries.

Here is how I do it now:

>>> from MySQLdb import connect
>>> from MySQLdb.cursors import DictCursor
>>> con = connect(
    passwd = "****",
    db = 'my_db',
    user = "db_user",
    host = "localhost",
    cursorclass = DictCursor,
    use_unicode=True,
    charset="utf8"
)
>>> cursor = con.cursor ()
>>> cursor.execute (u'Select * from basic_applet')
>>> res = cursor.fetchall()
>>> print(res)
({'Title_de': 'test title', .... })
>>> type(res[0]['Title_de'])
<type '开发者_Python百科str'>

As you can see, it is not returning unicode.

In my table structure, Title_de is set as unicode.

IDbasic_applet  int(10)...
Title_de    varchar(75)     utf8_bin

I really don't know what I'm doing wrong, any help would be really welcome.

Thanks in advance,

Simon


What you get is a bytestring. You must decode it in order to get a unicode string. It basically comes down to this:

>>> byte_string = 'F\xe9vrier'
>>> byte_string.decode('UTF-8')
u'Février'
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜