Python ElementTree 导出 xml 缺少 开头声明&【Pymssql】使用cursor.fetchall()获取执行结果时中文乱码

python 在调用ElementTree的write方法写入xml时,参数里增加 encoding='utf-8' 以及 xml_declaration=True

python 复制代码
et_root.write('filename.xml', encoding='utf-8', xml_declaration=True)

中文乱码问题:

Python的pymssql库连接SQL Sever,执行查询语句后,利用cursor.fetchall()方法获取执行结果的时候出现中文乱码,就像这样:

python 复制代码
cursor.execute("select * from director where dno = '" + self.no.get()+"'")  
data = cursor.fetchall()

结果:

汉字部分出现乱码,如图

('1111111111', 'Áõ¿¡ ', 20, 'ÄÐ ', '>>úе2203 ', '1', '1111111111 ')

出现中文乱码的原因可能是由于数据库中存储的字符集与Python解释器所使用的字符集不一致导致的。可以在连接数据库时,通过指定字符集来解决这个问题。

我之前设置的是charset="utf8",但仍然出现乱码,查完资料后改成了charset="cp936",就没有了乱码,具体如下:

原来连接数据库的语句:

python 复制代码
conn = pymssql.connect(host="localhost", port="1433", user=self.user, password=self.password,charset="utf8")

修改后:

python 复制代码
conn = pymssql.connect(host="localhost", port="1433", user=self.user, password=self.password,charset="cp936")

再运行就会发现已无乱码。

拓展

数据库中存储的字符集是指用于表示和存储数据的一种编码方式。不同的字符集可以支持不同的语言和字符,例如UTF-8字符集可以支持中文、日文、韩文等亚洲语言,而ASCII字符集则只能支持英文字母和数字等字符。

CP936是一种中文字符集编码,也称为GBK编码。它是由中国国家标准委员会制定的一种汉字编码标准,用于将汉字转换为计算机能够识别的二进制代码。CP936编码支持简体中文、繁体中文和日文等多种语言,并且可以表示超过70,000个汉字和50,000个汉字拼音。

在Windows操作系统中,默认使用CP936编码来处理文本文件,因此如果你在Windows下编写或编辑文本文件时,需要确保文件的编码格式为CP936。

原文链接:https://blog.csdn.net/U202113837/article/details/131467728

相关推荐
Mzyh1 分钟前
通过蓝印RPA获取到飞书聊天中的信息图片-自动化
windows·python·ai·自动化·飞书·rpa
2403_883261092 分钟前
CSS如何避免浮动元素换行_计算所有浮动元素的总宽度不超过父容器宽度
jvm·数据库·python
复园电子3 分钟前
RPA自动化最后一公里:通过Python调用RESTful API挂载物理U盾实战
python·自动化·rpa
2601_956139423 分钟前
新零售品牌全案公司找哪家
人工智能·python·零售
m0_609160494 分钟前
Vue 中对象键名重复导致数据被覆盖的原理与解决方案
jvm·数据库·python
2401_880071405 分钟前
SQL中如何查找特定的空值行:WHERE IS NULL深度解析
jvm·数据库·python
2401_831419446 分钟前
如何正确解析含 HTML 实体的 XML 字符串并渲染为 HTML 表格
jvm·数据库·python
盼小辉丶6 分钟前
PyTorch强化学习实战——使用交叉熵方法解决 FrozenLake 环境
人工智能·pytorch·python·强化学习
彳亍1016 分钟前
如何排查Oracle客户端连接慢_DNS解析超时与sqlnet配置优化
jvm·数据库·python
2301_781571427 分钟前
如何在 React Native 中高效缓存视频并使用 expo-av 播放
jvm·数据库·python