一. 连接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()有关;

三.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') # 可能导致字体设置失败
网友评论