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数据类型详解(四)字典:dict
May 12 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
使用tensorflow实现AlexNet
Nov 20 Python
django最快程序开发流程详解
Jul 19 Python
Python简易版停车管理系统
Aug 12 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
Python中函数的返回值示例浅析
Aug 28 Python
python 创建一维的0向量实例
Dec 02 Python
Pytest参数化parametrize使用代码实例
Feb 22 Python
Python文件时间操作步骤代码详解
Apr 13 Python
django form和field具体方法和属性说明
Jul 09 Python
Python 创建守护进程的示例
Sep 29 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中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
Python实现方便使用的级联进度信息实例
2015/05/05 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
技能比赛获奖感言
2014/02/14 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
敬老院标语
2014/06/27 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
学校重阳节活动总结
2015/03/24 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
python如何将mat文件转为png
2022/07/15 Python