最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
linux中pypyodbc读取GB编码mdb中文乱码解决办法
时间:2022-06-25 18:19:45 编辑:袖梨 来源:一聚教程网
当前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编码格式。
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21