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的re模块正则表达式操作
May 25 Python
Python+微信接口实现运维报警
Aug 27 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
python 常用的基础函数
Jul 10 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
python线程信号量semaphore使用解析
Nov 30 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Python如何在循环内使用list.remove()
Jun 01 Python
如何利用python 读取配置文件
Jan 06 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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 函数执行效率的小比较
2010/10/17 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
如何在PHP中使用数组
2020/06/09 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
Python变量作用范围实例分析
2015/07/07 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
乡文化站暑期培训方案
2014/08/28 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
新生入学欢迎词
2015/01/26 职场文书
增值税发票丢失证明
2015/06/19 职场文书
开票证明
2015/06/23 职场文书
《给予树》教学反思
2016/03/03 职场文书
求职信如何撰写?
2019/05/22 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis