Python连接mssql数据库编码问题解决方法

 更新时间:2015年01月01日 12:54:49   投稿:junjie  
这篇文章主要介绍了Python连接mssql数据库编码问题解决方法,本文方法同样适用mysql、sqllite、mongodb等数据库,需要的朋友可以参考下

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实现删除文件但保留指定文件

    这篇文章主要介绍了Python实现删除文件但保留指定文件,本文直接给出实现代码,并同时给出代码解释,需要的朋友可以参考下
    2015-06-06
  • python中屏蔽输出示例详解

    python中屏蔽输出示例详解

    python中屏蔽输出包含屏蔽标准输出(比如打印出来的内容)、屏蔽标准错误(错误信息)还有屏蔽logging信息等,这篇文章主要介绍了python中屏蔽输出,需要的朋友可以参考下
    2024-05-05
  • Python调用C语言的实现

    Python调用C语言的实现

    这篇文章主要介绍了Python调用C语言的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python异常处理try except过程解析

    python异常处理try except过程解析

    这篇文章主要介绍了python异常处理try except过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 如何利用Python批量处理行、列和单元格详解

    如何利用Python批量处理行、列和单元格详解

    因为之后的工作可能会经常用到excel,而且也不想荒废Python,出于为以后做准备以防不时之需,下面这篇文章主要给大家介绍了关于如何利用Python批量处理行、列和单元格的相关资料,需要的朋友可以参考下
    2021-09-09
  • Python 遍历循环详细

    Python 遍历循环详细

    这篇文章主要介绍的是Python 遍历循环,遍历循环可理解为从遍历结构中逐一提取元素,放在循环变量中,对于所提取的每个元素执行一次语句块。由保留字for和in组成,完整遍历所有元素后结束每次循环,所获得元素放入循环变量,并执行一次语句块,下面就来看文章介绍
    2021-10-10
  • Python实现微博动态图片爬取详解

    Python实现微博动态图片爬取详解

    这篇文章主要为大家介绍了如何利用Python中的爬虫实现微博动态图片的爬取,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-03-03
  • 10个示例带你掌握python中的元组

    10个示例带你掌握python中的元组

    这篇文章主要介绍了python中的元组的相关资料,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • python 修改本地网络配置的方法

    python 修改本地网络配置的方法

    今天小编就为大家分享一篇python 修改本地网络配置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Django-simple-captcha验证码包使用方法详解

    Django-simple-captcha验证码包使用方法详解

    这篇文章主要介绍了Django-simple-captcha验证码包使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论