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脚本来删除指定容量以上的文件的教程
May 04 Python
python修改字典内key对应值的方法
Jul 11 Python
Apache如何部署django项目
May 21 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
详解python配置虚拟环境
Apr 08 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
tensorflow保持每次训练结果一致的简单实现
Feb 17 Python
python实现PCA降维的示例详解
Feb 24 Python
django日志默认打印request请求信息的方法示例
May 17 Python
Python使用os.listdir和os.walk获取文件路径
May 21 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数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
利用JS实现数字增长
2016/07/28 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
npm qs模块使用详解
2020/02/07 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
python读取和保存视频文件
2018/04/16 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
大学毕业自我评价
2014/02/02 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
考核评语大全
2014/04/29 职场文书
考试保密承诺书
2014/08/30 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
股权转让协议书
2014/12/07 职场文书
实习单位指导教师评语
2014/12/30 职场文书
怎样写观后感
2015/06/19 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL