美文网首页
Python出现的中文乱码问题(SQL server、PyQt、

Python出现的中文乱码问题(SQL server、PyQt、

作者: 白鬓少年 | 来源:发表于2020-06-30 16:04 被阅读0次

一. 连接SQL server出现乱码

【问题描述】: pymmsql连接SQL Server中文出现乱码 中文乱码

【问题分析】:①、默认情况下SQL Server 使用ISO字符集(代码页1252)(latin1字符集);②、python的 pymssql模块默认以'utf8'编码方式解码(默认charset='utf8'); ③、数据库内的中文,被python以二进制的方式读取后以'utf8'方式解码显示为乱码,其二进制数据未改变。
【解决方案】:将因'utf8'解码成乱码的str以其原正确的编码方式'latin1'再次encode成正确的bytes然后以'GB2312'编码方式解码成正常的中文str: str.encode('latin1').decode('GB2312')

正常显示

二. PyQt的table中文bug

【问题描述】:Pyqt的table(widget)在未选中Item时直接输入中文,UI界面卡死;
【问题定位】:经排查发现,与table中使用了self.tableWidget.setCellwidget()有关;

【解决方案】:底层原因未明,暂时避免在使用了setCellwidget()的table中开启编辑功能。

三.Matplolib中出现中文乱码

【问题描述】:matplotlib中文轴标签成乱码

轴标签中文乱码
【问题定位】:matplotlib从V2.0后默认字体仅包含西方字母的字形, 没有覆盖中文、韩文或日文。参考Text properties and layout
【解决方案】:可添加代码设置中文字体,也可修改matplotlib配置文件,更改默认字体,这里仅介绍前一种方法,第二种方法请参考:python matplotlib 中文显示参数设置
import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['KaiTi','SimHei']   #显示汉字为 楷体, 汉字不支持 粗体,斜体等设置
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
mpl.rcParams['font.size'] = 10 

切记字体设置要在style之后,否则可能依旧出现中文乱码(在下被这个整整坑了一天半的时间),错误代码如下

import matplotlib as mpl
mpl.rcParams['font.sans-serif']=['KaiTi','SimHei']   #显示汉字为 楷体, 汉字不支持 粗体,斜体等设置
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
mpl.rcParams['font.size'] = 10 
mpl.style.use('seaborn-whitegrid') # 可能导致字体设置失败

相关文章

网友评论

      本文标题:Python出现的中文乱码问题(SQL server、PyQt、

      本文链接:https://www.haomeiwen.com/subject/ueyxqktx.html