关于 Python 各种中文乱码问题的解决办法


其实使用 Python 也不久,却也遇到了各种中文乱码的问题。本文是关于 Python 中文乱码问题几种解决办法的总结,希望能够帮到您,欢迎大家补充。

相关 Github 源码

版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。



1. 添加声明:

py 文件里写中文需要添加声明如下,否则 python 会默认使用 ASCII 编码导致中文乱码。

# -*- coding: utf-8 -*-
2. 设置默认编码为 utf-8:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
3. 如果在 Windows 命令行里执行 Python 仍然出现中文乱码的话,可以尝试调用以下语句:

源码较长这里就不贴了,主要是将 Unicode 终端输出指定为 utf-8 编解码,大家可以点这里看源码

import ch
# 避免 windows 下中文乱码
ch.utf8writer_register()
4. 使用 matplotlib 绘制图像添加标题或者注释时出现中文乱码,可以指定默认中文字体来解决:
import ch
# 避免图像标题或注释中文乱码
ch.set_ch()

我们来看看源码:

def set_ch():
	from pylab import mpl
	# 指定默认字体,注意这里根据自己的系统选用
	mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] 
	# 解决保存图像是负号'-'显示为方块的问题
	mpl.rcParams['axes.unicode_minus'] = False 

衍生问题,如何查找系统支持的中文字体?

`linux` 执行命令 fc-list :lang=zh-cn  # 注意:前有个空格
`windows` 直接在 C:\Windows\Fonts 目录下查看


欢迎来撩

frendy

It will shine for us...