ref:http://www.cnblogs.com/zhoujie/archive/2013/06/07/problem1.html

1、python连接mssql数据库编码问题

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。

(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码

#encoding=utf-8

(2)、然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号

conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

(3)、设置python系统的默认编码(对于文件来说,这招几乎屡试不爽,呵呵~~)

importsys

reload(sys)

sys.setdefaultencoding('utf8')

注意:上述编码是“utf8”,而不是“utf-8”,我也没弄明白,大部分情况下,这个无所谓的,但是这里我试了必须要是“utf8”

一个简单的完整的python连接mssqlserver的例子如下(得安装pymssql包):

1 #encoding:utf8

2 importsys3 reload(sys)4 sys.setdefaultencoding('utf8')5 importpymssql6 try:7 conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')8 sql="select * from UserInfo"

9

10 cur=conn.cursor()11 cur.execute(sql)12 data=cur.fetchall()13 conn.close()14 print data15 exceptException,e:16 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')]

[Finishedin 0.2s]

虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

上述代码中第14行data是整个查询的结果,如果指定某个具体的字段,如print data[0][2](表示取查询结果的第一行第三列的字段的值),则会输出中文。

其实不仅仅是mssqlserver数据库,mysql(需下载MySQLdb包)、sqllite(python自带的文件数据库)、mongodb(需下载PyMongo包)等或者是普通文本文件也是类似的解决方案。

2、参数*args和和**kwargs

这是一个Python特性,类似C#和C++中的参数数组(param[]),允许函数接受动态的、可变数量的、参数名只在运行时可知的参数。 如果在函数定义时,只在参数前面加一个*号,所有传递给函数的参数将会保存为一个元组. 如果在函数定义时,在参数前面加两个*号,所有传递给函数的关键字参数,将会保存为一个字典

def foo(*args, **kwargs):print "Positional arguments are:"

printargsprint "Keyword arguments are:"

print kwargs

调用它,看看它是如何工作的:

>>> foo(1, 2, 3) Positional arguments are: (1, 2, 3) Keyword arguments are: {}>>> foo(1, 2, name='Adrian', framework='Django') Positional arguments are: (1, 2) Keyword arguments are: {'framework': 'Django', 'name': 'Adrian'}

python 连接数据库对中文读取超过_python 处理中文 读取数据库输出全是问号相关推荐

  1. python连接数据库并编写调用函数_Python使用pyodbc访问数据库操作方法详解

    本文实例讲述了Python使用pyodbc访问数据库操作方法.分享给大家供大家参考,具体如下: 1.连接数据库 1)直接连接数据库和创建一个游标(cursor) cnxn =pyodbc.connec ...

  2. python中文分词统计_python 实现中文分词统计

    总是看到别人用Python搞各种统计,前端菜鸟的我也来尝试了一把.有各种语义分析库在,一切好像并不是很复杂.不过Python刚开始看,估计代码有点丑. 一.两种中文分词开发包 thulac (http ...

  3. python 读取文件到字典读取顺序_python顺序的读取文件夹下名称有序的文件方法...

    python顺序的读取文件夹下名称有序的文件方法 如下所示: import os path="/home/test/" #待读取的文件夹 path_list=os.listdir( ...

  4. python中文文本分析_Python有趣|中文文本情感分析

    前言 前文给大家说了python机器学习的路径,这光说不练假把式,这次,罗罗攀就带大家完成一个中文文本情感分析的机器学习项目,今天的流程如下: 数据情况和处理 数据情况 这里的数据为大众点评上的评论数 ...

  5. python加载图片的方法_python从网络读取图片并直接进行处理的方法

    python从网络读取图片并直接进行处理的方法 更新时间:2015年05月22日 10:09:08 作者:pythoner 这篇文章主要介绍了python从网络读取图片并直接进行处理的方法,涉及cSt ...

  6. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

  7. python numpy读取数据_python使用numpy读取、保存txt数据的实例

    1.首先生成array数组 import numpy as np a = np.random.rand(5,5) print(a) 结果: array([[0.17374613, 0.87715267 ...

  8. python合并word表格单元格_python docx模块读取word表格遇到合并单元格时的处理

    python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表 遇到合并单元格时的处理 通 ...

  9. python的文件读取方式_python中文件读取方式

    指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...

最新文章

  1. CmsEasy20160825前台无限制GetShell复现
  2. LINUX 第五章 apache php mysql
  3. iOS程序员眼中的客户端免登陆(数据迁移已更新)
  4. Map集合的几种遍历方式
  5. Java连接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash
  6. spring mvc 入门DispatcherServlet转发
  7. 180°舵机的使用步骤
  8. Python try/except/finally等
  9. 点播转码相关常见问题及排查方式
  10. java 子类必须实现_Java学习之接口的子类必须实现接口的全部方法吗?
  11. spring 配置文件被加载两次
  12. win10下正确使用Sublime Text搭建python调试环境
  13. 接收流信息---字符串
  14. XEN虚拟机修改系统时间
  15. H5调用app原生接口
  16. python 画笔画一些形状(八卦图、小鸭子、五角星等)
  17. Linux管道相关命令
  18. 修改Linux swap大小,LINUX操作系统如何调整SWAP大小
  19. My Visual DataBase(数据库编程软件)v5.3免费版
  20. jquery设置cursor的属性改变光标的类型(形状)

热门文章

  1. 常用正则表达式合集与工具
  2. 一举拿下高可用与分布式协调系统设计!
  3. 58集团技术委员会主席:斗胆谈一谈,我是如何做到年薪百万的!!!
  4. 就在几天前,听说用了 YYYY-MM-dd 的程序员,都在加班改 Bug !
  5. 分布式事务选型的取舍
  6. 你写的代码好像一条虫啊!
  7. 微服务为什么一定要用docker ?
  8. 企业如何提高竞争力,高效协同工作?
  9. 团队需要Scrum Master做这六件事-Scrum中文网
  10. 反对迭代0:停止拖延,开始迭代