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读取键盘输入的2种方法
Jun 16 Python
python简单判断序列是否为空的方法
Jun 30 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
用python制作游戏外挂
Jan 04 Python
教你用Python写安卓游戏外挂
Jan 11 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
python实现广度优先搜索过程解析
Oct 19 Python
python zip()函数使用方法解析
Oct 31 Python
Python过滤序列元素的方法
Jul 31 Python
Python如何读写字节数据
Aug 05 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
php旋转图片90度的方法
2013/11/07 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python多进程并发demo实例解析
2019/12/13 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
英国著名的化妆品折扣网站:Allbeauty.com
2016/07/21 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
西安交大自主招生自荐信
2014/01/27 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
运动会稿件50字
2014/02/17 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
财产公证书格式
2014/04/10 职场文书
六一儿童节活动总结
2014/08/27 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS