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

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’����’, u’u7537 ‘, 35, u’����’),
 (u’20093502′, u’����’, u’u5973 ‘, 34, u’��Ů’),
 (u’20093503′, u’�����’, u’u7537 ‘, 25, u’2B����’),
 (u’20093504′, u’��ӯӯ’, u’u5973 ‘, 24, u’Ư��’)]
 [Finished in 0.2s]
 
  虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

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

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

立即学习“Python免费学习笔记(深入)”;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2292369.html

(0)
上一篇 2025年2月28日 01:41:39
下一篇 2025年2月25日 02:50:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中optparse模块使用浅析

    最近遇到一个问题,是指定参数来运行某个特定的进程,这很类似linux中一些命令的参数了,比如ls -a,为什么加上-a选项会响应。optparse模块实现的也是类似的功能,它是为脚本传递命令参数。 使用此模块前,首先需要导入模块中的类Opt…

    2025年2月28日
    200
  • Python解决鸡兔同笼问题的方法

    本文实例讲述了python解决鸡兔同笼问题的方法,分享给大家供大家参考。具体分析如下: 问题描述 一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。已经知道了笼 子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多…

    编程技术 2025年2月28日
    200
  • Python列表计数及插入实例

    本文实例讲述了python列表计数及插入的用法。分享给大家供大家参考。具体如下: 复制代码 代码如下:word=[‘a’,’b’,’c’,’d’…

    编程技术 2025年2月28日
    200
  • Python二维码生成库qrcode安装和使用示例

    二维码简称 qr code(quick response code),学名为快速响应矩阵码,是二维条码的一种,由日本的 denso wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友…

    2025年2月28日
    200
  • Python Web框架Flask信号机制(signals)介绍

    信号(signals) Flask信号(signals, or event hooking)允许特定的发送端通知订阅者发生了什么(既然知道发生了什么,那我们可以知道接下来该做什么了)。 Flask提供了一些信号(核心信号)且其它的扩展提供更…

    编程技术 2025年2月28日
    200
  • python正则表达式中的括号匹配问题

    问题: m = re.findall(‘[0-9]*4[0-9]*’, ‘[4]’) 可以匹配到4.m = re.findall(‘([0-9])*4([0-9])*’…

    编程技术 2025年2月28日
    200
  • 简单使用Python自动生成文章

      为了应付某些情况,需要做17份记录。虽然不很重要,但是17份完全雷同也不很好。大体看了一下,此记录大致分为四段。于是决定每段提供四种选项,每段四选一,拼凑成四段文字,存成一个文件。文件名就叫“xx记录+日期”。应急的随手创作,使用了“文…

    编程技术 2025年2月28日
    200
  • Python计算程序运行时间的方法

    本文实例讲述了python计算程序运行时间的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:import time def start_sleep():    time.sleep(3) if __name__ == &…

    编程技术 2025年2月28日
    200
  • Python编程中的反模式实例分析

    本文实例讲述了python编程中的反模式。分享给大家供大家参考。具体分析如下: Python是时下最热门的编程语言之一了。简洁而富有表达力的语法,两三行代码往往就能解决十来行C代码才能解决的问题;丰富的标准库和第三方库,大大节约了开发时间,…

    编程技术 2025年2月28日
    200
  • python字符串替换的2种方法

    python 字符串替换 是python 操作字符串的时候经常会碰到的问题,这里简单介绍下字符串替换方法。 python 字符串替换可以用2种方法实现:1是用字符串本身的方法。2用正则来替换字符串 下面用个例子来实验下:a = &#8216…

    编程技术 2025年2月28日
    200

发表回复

登录后才能评论