Python, mysqldb и юникод - PullRequest
       18

Python, mysqldb и юникод

4 голосов
/ 05 сентября 2011

У меня проблемы с получением значений Unicode из запросов MySQL.

Вот как я это делаю сейчас:

>>> 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 'str'>

Как видите, он не возвращает юникод.

В моей структуре таблицы Title_de установлен как юникод.

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

Я действительно не знаю, что я делаю неправильно, любая помощь будет очень кстати.

Заранее спасибо,

Simon

1 Ответ

2 голосов
/ 05 сентября 2011

То, что вы получаете, является строкой байтов. Вы должны декодировать его, чтобы получить строку Unicode. Это в основном сводится к этому:

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