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編碼格式。
總結
以上是生活随笔為你收集整理的linux调用odbc接口乱码,linux中pypyodbc读取GB编码mdb中文乱码解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几点WPS表格小技巧WPS表格日期输入技
- 下一篇: linux sudo 必须属于用户ID0