Python连接mssql数据库编码问题解决方法


Posted in Python onJanuary 01, 2015

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。

(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码

#encoding=utf-8

(2)、然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号
conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

(3)、设置python系统的默认编码(对于文件来说,这招几乎屡试不爽,呵呵~~)
import sys

reload(sys)

sys.setdefaultencoding('utf8')

注意:上述编码是“utf8”,而不是“utf-8”,我也没弄明白,大部分情况下,这个无所谓的,但是这里我试了必须要是“utf8”

一个简单的完整的python连接mssqlserver的例子如下(得安装pymssql包):

#encoding:utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import pymssql

try:

    conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

    sql="select * from UserInfo"
    cur=conn.cursor()

    cur.execute(sql)

    data=cur.fetchall()

    conn.close()

    print data

except Exception,e:

    print e

运行结果如下:

[(u'20093501', u'\xb9\xf9\xbe\xb8', u'\u7537 ', 35, u'\xb4\xf3\xcf\xc0'),

 (u'20093502', u'\xbb\xc6\xc8\xd8', u'\u5973 ', 34, u'\xc3\xc0\xc5\xae'), 

 (u'20093503', u'\xc1\xee\xba\xfc\xb3\xe5', u'\u7537 ', 25, u'2B\xc7\xe0\xc4\xea'), 

 (u'20093504', u'\xc8\xce\xd3\xaf\xd3\xaf', u'\u5973 ', 24, u'\xc6\xaf\xc1\xc1')]

 [Finished in 0.2s]

 

虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

上述代码中第14行data是整个查询的结果,如果指定某个具体的字段,如print data[0][2](表示取查询结果的第一行第三列的字段的值),则会输出中文。

其实不仅仅是mssqlserver数据库,mysql(需下载MySQLdb包)、sqllite(python自带的文件数据库)、mongodb(需下载PyMongo包)等或者是普通文本文件也是类似的解决方案。

Python 相关文章推荐
python实现斐波那契递归函数的方法
Sep 08 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
Django中的Signal代码详解
Feb 05 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
Python代码块及缓存机制原理详解
Dec 13 Python
使用Pytorch来拟合函数方式
Jan 14 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
Python中optparse模块使用浅析
Jan 01 #Python
Python中urllib2模块的8个使用细节分享
Jan 01 #Python
Python读取ini文件、操作mysql、发送邮件实例
Jan 01 #Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 #Python
Python Web框架Flask信号机制(signals)介绍
Jan 01 #Python
Python模拟登录12306的方法
Dec 30 #Python
python执行shell获取硬件参数写入mysql的方法
Dec 29 #Python
You might like
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
js实现网页收藏功能
2015/12/17 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
python实现dict版图遍历示例
2014/02/19 Python
Python中的yield浅析
2014/06/16 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
python 如何将office文件转换为PDF
2020/09/22 Python
Python 列表反转显示的四种方法
2020/11/16 Python
python re模块常见用法例举
2021/03/01 Python
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
运动会广播稿60字
2014/01/15 职场文书
企业文化标语大全
2014/06/10 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
党员自评材料范文
2014/12/17 职场文书
2015年教务工作总结
2015/05/23 职场文书
地球上的星星观后感
2015/06/02 职场文书
单位政审意见范文
2015/06/04 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书