2014-01-16 3 views
0

Я подключаюсь к базе данных MS Access (файл mdb) через pyodbc.pyodbc + MS Access (*. Mdb) + UnicodeDecodeError

Некоторые данные в этом db имеют польский символ like (łóźćśę и т. Д.). Когда я беру некоторые данные, польский символ заменяется странными символами (³, ê). Я пытаюсь расшифровать в utf8, cp1250, cp1252, latin1, latin2, но он не решает мою проблему (по-прежнему char неправильный).

Может ли кто-нибудь мне помочь?

пс. на данный момент мое решение - data = data.replace('\xc2\xb3', 'ł'), но оно уродливо.

ответ

1

У меня есть файл .mdb с некоторыми примерами данных в таблице с именем [лексика]. При запуске Access и откройте таблицу в режиме таблицы выглядит следующим образом:

ID word  language english_equiv 
-- -------- -------- ------------- 
5 żaglówka Polish sailboat 

Следующая Python 2.7.5 код

# -*- coding: utf-8 -*- 
import pyodbc 

db = pyodbc.connect(
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' + 
    r'DBQ=C:\__tmp\unicodeMdbTest.mdb') 

cursor1 = db.execute('SELECT [word] FROM [vocabulary] WHERE [ID]=5') 

while 1: 
    row = cursor1.fetchone() 
    if not row: 
     break 
    print row.word 
db.close() 

успешно печатает следующее в IDLE оболочки

żaglówka 

Обратите внимание на объявление кодировки файла в первой строке файла .py.

Смежные вопросы