linux调用odbc接口乱码,linux中pypyodbc读取GB编码mdb中文乱码解决办法
當(dāng)前1.3.3版本的pypyodbc在linux系統(tǒng)上面已經(jīng)可以讀取有中文字符的mdb文件,不再出現(xiàn)異常,但是讀取的中文字符卻全是亂碼。
下面是根據(jù)一些現(xiàn)象的合理推論:
mdb文件來自于windows系統(tǒng),其中的中文字符使用GB編碼無疑,但linux系統(tǒng)上mdbtools提供的odbc驅(qū)動底層已經(jīng)執(zhí)行了編碼轉(zhuǎn)換,將GB碼轉(zhuǎn)換為unicode碼,pypyodbc再一次進(jìn)行轉(zhuǎn)換所以出現(xiàn)了問題。
pypyodbc.connect函數(shù)有一個參數(shù)unicode_results,在python3版本上默認(rèn)為True,也就是返回unicode編碼的結(jié)果集。
odbc底層驅(qū)動轉(zhuǎn)換一次編碼,pypyodbc再轉(zhuǎn)換一次,悲劇不可避免的出現(xiàn)了。
因此設(shè)定connect函數(shù)的unicode_results為False,也就是原樣返回結(jié)果集,然后結(jié)果集中的字段名和字段值都需要解碼為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驅(qū)動返回的結(jié)果集已經(jīng)是unicode編碼格式。
總結(jié)
以上是生活随笔為你收集整理的linux调用odbc接口乱码,linux中pypyodbc读取GB编码mdb中文乱码解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几点WPS表格小技巧WPS表格日期输入技
- 下一篇: Linux下的MySQL测试,Linux