300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux调用odbc接口乱码 linux中pypyodbc读取GB编码mdb中文乱码解决办法

linux调用odbc接口乱码 linux中pypyodbc读取GB编码mdb中文乱码解决办法

时间:2022-12-08 21:14:47

相关推荐

linux调用odbc接口乱码 linux中pypyodbc读取GB编码mdb中文乱码解决办法

当前1.3.3版本的pypyodbc在linux系统上面已经可以读取有中文字符的mdb文件,不再出现异常,但是读取的中文字符却全是乱码。

下面是根据一些现象的合理推论:

mdb文件来自于windows系统,其中的中文字符使用GB编码无疑,但linux系统上mdbtools提供的odbc驱动底层已经执行了编码转换,将GB码转换为unicode码,pypyodbc再一次进行转换所以出现了问题。

pypyodbc.connect函数有一个参数unicode_results,在python3版本上默认为True,也就是返回unicode编码的结果集。

odbc底层驱动转换一次编码,pypyodbc再转换一次,悲剧不可避免的出现了。

因此设定connect函数的unicode_results为False,也就是原样返回结果集,然后结果集中的字段名和字段值都需要解码为unicode字符串:

$ python3

>>> conn=pypyodbc.connect('Driver=MDBTools;DBQ=/path/to/Record.mdb', unicode_results=False)

>>> conn.cursor().execute('SELECT * FROM Build').fetchone()[0].decode('UTF-8')

decode(‘UTF-8′)解码成功,说明mdbtools的odbc驱动返回的结果集已经是unicode编码格式。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。