PyODBC выводит неправильный UTF-16

Я пытаюсь получить список имен таблиц из базы данных MySQL. Соответствующие части кода выглядят следующим образом::

conn = pyodbc.connect('...')
cursor = conn.cursor()
for table in cursor.tables():
    print table.table_name

Для каждой таблицы он печатает кучу тарабарских символов (квадратов и вопросительных знаков в ромбах ). Используя repr(table.table_name), он печатает:

u'\U00500041\U004c0050\U00430049\U00540041\U004f0049'

для таблицы с именем «ПРИЛОЖЕНИЕ».

Если вы рассматриваете каждый 32-битный символ как два 16-битных символа, вы получите строку «PALPCITAOI». Перестановка пар символов (1 и 2, 3 и 4 и т.д. )дает "APPLICATIO" (без буквы "N"). Предположительно, он поменял местами N и нулевой символ, в результате чего отсутствующий N (предполагает нулевые-оканчивающиеся строки).

Как правильно вывести имена таблиц?

Он работает под управлением Python 2.4, PyODBC 2.1 и MySQL 5.0.22.

8
задан Jonathan 28 March 2012 в 16:17
поделиться