pyodbc + MS Access(* .mdb)+ UnicodeDecodeError

时间:2014-01-16 09:54:39

标签: python ms-access unicode pyodbc

我通过pyodbc连接到MS Access数据库(mdb文件)。

这个数据库中的一些数据有像(łóźćśę等)的波兰语。 当我获取一些数据时,波兰字符被奇怪的字符(³,ê)取代。 我尝试解码为utf8,cp1250,cp1252,latin1,latin2,但它不能解决我的问题(仍然是char不正确)。

任何人都可以帮助我吗?

PS。现在我的解决方案是 data = data.replace('\xc2\xb3', 'ł')但是它很难看。

1 个答案:

答案 0 :(得分: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 shell中成功打印以下内容

żaglówka

请注意.py文件第一行的文件编码声明。