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并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
python3爬取数据至mysql的方法
Jun 26 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
python实现吃苹果小游戏
Mar 21 Python
Python pandas如何向excel添加数据
May 22 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
用python绘制樱花树
Oct 09 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
python如何在word中存储本地图片
Apr 07 Python
浅谈Python基础之列表那些事儿
May 11 Python
python 爬取天气网卫星图片
Jun 07 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
php引用传值实例详解学习
2013/11/06 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP反射API示例分享
2016/10/08 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
Python正则表达式介绍
2012/08/06 Python
Python线性方程组求解运算示例
2018/01/17 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Python版中国省市经纬度
2020/02/11 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
Pycharm调试程序技巧小结
2020/08/08 Python
python MD5加密的示例
2020/10/19 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
百度吧主申请感言
2014/01/12 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
合作协议书
2014/04/23 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
培训通知
2015/04/17 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server