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版图遍历示例
Feb 19 Python
Python函数中定义参数的四种方式
Nov 30 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 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
天津市收音机工业发展史
2021/03/04 无线电
escape unescape的php下的实现方法
2007/04/27 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
Python模块学习 re 正则表达式
2011/05/19 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
python字符串,数值计算
2016/10/05 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
建筑专业自荐信范文
2014/01/05 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
2015年学校总务工作总结
2015/07/20 职场文书