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 Django(图文)
Nov 04 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
详解Python Socket网络编程
Jan 05 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
python放大图片和画方格实现算法
Mar 30 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
Python之批量创建文件的实例讲解
May 10 Python
关于python写入文件自动换行的问题
Jun 23 Python
解决python opencv无法显示图片的问题
Oct 28 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
python playwrigh框架入门安装使用
Jul 23 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
Laravel配合jwt使用的方法实例
2020/10/25 PHP
javascript call方法使用说明
2010/01/11 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Python编写单元测试代码实例
2020/09/10 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
企业给企业的表扬信
2014/01/13 职场文书
幼儿园开学寄语
2014/04/03 职场文书
信息技术课后反思
2014/04/27 职场文书
趣味运动会广播稿
2014/09/13 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
雨中的树观后感
2015/06/03 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL