后端开发|Python教程
Python,连接mssql数据库编码问题
后端开发-Python教程
python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。
微信公众号导航 网站源码下载,vscode标准库路径,ubuntu 安装 慢,li启动tomcat命令,英语爬虫,php bc库,浙江霸屏seo外包,二代旅游网站CMS,自适应平台网站模板lzw
(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码
php网站开发实例教程源码,ubuntu nfs4,tomcat9打开乱码,清远爬虫ip厂,php 微信公众号模板消息格式,vue php seolzw
复制代码 代码如下:
c map 源码,vscode运行h5无反应,ubuntu gdal,tomcat加载war包重启,qt sqlite 路径,网页设计中的交互设计,远程桌面连接云服务器,针对微信源码的插件,学习前端框架技术,爬虫盒马数据,php备注,搜狗seo快速排名公司,化妆品公司网站源码,wp网页模板,wordpress模板设置,仿支付宝全部页面,学生综合管理系统下载,asp程序整合ucenterlzw
#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
运行结果如下:
复制代码 代码如下:
[(u3501, u\xb9\xf9\xbe\xb8, u\u7537 , 35, u\xb4\xf3\xcf\xc0),
(u3502, u\xbb\xc6\xc8\xd8, u\u5973 , 34, u\xc3\xc0\xc5\xae),
(u3503, u\xc1\xee\xba\xfc\xb3\xe5, u\u7537 , 25, u2B\xc7\xe0\xc4\xea),
(u3504, 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包)等或者是普通文本文件也是类似的解决方案。