Подключение к базе данных (Pervasive).
Кодировка базы - cp866. ОС - Windows
Не могу вывести в консоль кириллицу.
import pyodbc
dbfile = pyodbc.connect('DSN=test')
cursor = dbfile.cursor()
cursor.execute("select NameAccount from account_dbt")
row = cursor.fetchall()
for l in range(4):
t = str(row[l][0])
print(t)
Результат:
ЋЋЋ ђ®¬ иЄ Ћ¤Ё(Romashka odin)
ЋЋЋ ђ®¬ иЄ Ћ¤Ё(Romashka odin) - 2
ЋЋЋ ђ®¬ иЄ Ћ¤Ё(Romashka odin) - 3
ЋЋЋ ђ®¬ иЄ Ћ¤Ё(Romashka odin) - 4
Пробовал так:
t = str(row[l][0]).encode('utf-8')
Результат:
b'\xd0\x8b\xd0\x8b\xd0\x8b \xd1\x92\xc2\xae\xc2\xac\xc2\xa0\xd0\xb8\xd0\x84\xc2\xa0 \xd0\x8b\xc2\xa4\xd0\x81\xc2\xad(Romashka odin)'
b'\xd0\x8b\xd0\x8b\xd0\x8b \xd1\x92\xc2\xae\xc2\xac\xc2\xa0\xd0\xb8\xd0\x84\xc2\xa0 \xd0\x8b\xc2\xa4\xd0\x81\xc2\xad(Romashka odin) - 2'
b'\xd0\x8b\xd0\x8b\xd0\x8b \xd1\x92\xc2\xae\xc2\xac\xc2\xa0\xd0\xb8\xd0\x84\xc2\xa0 \xd0\x8b\xc2\xa4\xd0\x81\xc2\xad(Romashka odin) - 3'
b'\xd0\x8b\xd0\x8b\xd0\x8b \xd1\x92\xc2\xae\xc2\xac\xc2\xa0\xd0\xb8\xd0\x84\xc2\xa0 \xd0\x8b\xc2\xa4\xd0\x81\xc2\xad(Romashka odin) - 4'
Статья на хабре про кодировки тоже не внесла ясность.
Как отобразить текст в читабельном виде?
py -mrun) – jfs Aug 02 '15 at 01:26str()использовать без надобности. Чтоprint(ascii(row[l][0]))показывает? – jfs Aug 02 '15 at 01:29''\u040b\u040b\u040b \u0452\xae\xac\xa0\u0438\u0404\xa0 \u040b\xa4\u0401\xad(Romashka odin)'' – Evgeny Bulokhov Aug 04 '15 at 09:38
locale.getpreferredencoding(False)?) иrows = [row.encode('mbcs').decode('cp866') for row in cursor.fetchall()]позволяет обойти проблему. По-хорошему следует узнать на каком этапе cp1251 применяется (добавляются ли уже неверные данные в базу данных или только при извлечении из базы портятся (попробовать настройки соединения (кодировку) изменить)). – jfs Aug 04 '15 at 11:28