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中文乱码解决办法相关推荐
- mysql json 中文乱码_MySQL对JSON类型UTF-8编码导致中文乱码探讨
前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中 ...
- Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法 文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码 不 ...
- Linux下Qt/PyQt5无法调用fcitx中文输入法解决办法
系统平台:Linux Mint 18.3 xfce 64bit (文末有福利) 博主相关文章: (1)PyQt5练习:结合matplotlib绘图 (2)PyQt5练习:词典翻译 (3)Linux下Q ...
- linux日志中有空格,linux中统计排序的内容含有空白行的解决办法
linux中统计排序的内容含有空白行的解决办法 废话不多说,直接上实例: 文件 sharkyun.log 的内容如下 [root@x201t ~]# cat -n sharkyun.log 1http ...
- linux ftp 登录慢,linux中vsftpd登录,上传下载文件慢解决办法linux操作系统 -电脑资料...
vsftpd登录慢主要是nameserver #定义DNS服务器的IP地址没有设置了,这样我们只要设置或更新一下nameserver即可解决了, 在使用vsftpd的过程中,一直以来都有一个问题就是在 ...
- linux远程桌面键盘无法输入,windows远程桌面ubuntu中Tab键不能补全命令的解决办法...
windows远程桌面ubuntu中Tab键不能补全命令的解决办法 前置 window可以远程ubuntu的前提 参考百度经验即可实现:windows远程桌面ubuntu 正文 在成功登陆远程桌面环境 ...
- bpmn如何查看代码 idea_解决idea中Activiti的bpmn编辑器的中文乱码问题
我使用的是idea2017+activiti6.0版本. 该文章主要是为了解决安装activiti插件后创建的流程模板中文乱码的问题. 1.安装Activiti流程编辑器插件. 1.1网上资料很多,这 ...
- ubuntu amd 64bit 安装 QQ for linux教程(附 不能使用中文的解决办法)
ubuntu amd 64bit 安装 QQ for linux教程(附 不能使用中文的解决办法) Ubuntu 64bit 安装32bit软件 64bit系统构架的先进不由多讲,只是应用程序相对少了 ...
- jsp中引入外部js文件发生中文乱码
jsp中引入外部js文件发生中文乱码 前言 排查 解决问题 前言 我在写作业时发现自己的作业出现中文乱码 排查 我先检查了一番 根据F12找到了span标签的id,在编译器中进行搜索找到找到了语句的所 ...
最新文章
- Lambda表达式入门,看这篇就够了!
- 中科院DeepMind联手,用深度学习揭示大脑如何识别人脸|Nature子刊
- SHELL编程之执行环境----邹立巍的博客
- 中缀试转后缀试及前缀试并计算其结果
- 死锁终结者:顺序锁和轮询锁!
- wordpress模板-单栏多色调全站pajx个人博客模板 idevs主题
- Redis学习总结(2)——Java使用Redis
- 076 Apache的HBase与cdh的sqoop集成(不建议不同版本之间的集成)
- 处理非window设置为window的Owner
- Java开发不得不会!java私塾初级模拟银源代码
- 实现一个基于XDP/eBPF的学习型网桥
- MATLAB常用求导和求偏导函数
- 企业微信应用分享(一)
- QQ企业邮箱和QQ邮箱之间的区别
- 微信小程序实现FBX模型的动画加载
- python产品作者如何去掉_python去除\ufeff、\xa0、\u3000
- DNSPod十问Neha Naik:以人民币结算海外IT业务的可能性?
- React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频)
- Gateway杂谈:线上引流和灰度发布
- 2021河南省高考成绩位次查询,2021年河南高考排名位次查询系统,河南高考排名查询入口...
热门文章
- .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
- 申请成为qq互联个人开发者步骤(注意事项)2018
- [转]阿里开源低代码引擎LowCodeEngine
- 【C#程序设计】教学讲义——第三章:C#语言基础
- 【CASS精品教程】南方CASS内业基本作图--野外测记草图法绘制常见地物教程
- linux shell之$?和得到联合使用命令的结果
- React Native之js调用Android原生使用Callback传递结果给js
- linux c之STDIN_FILENO的作用及与stdin的区别
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)