无法正常打印中文,不一定是程序编写过程中编码的问题,还有可能是执行环境编码的问题,尤其在Windows系统中。
问题描述
如图,在cmd中执行python脚本,无法正常打印中文。
问题分析
首先,打印内容并非乱码,而是未能成功打印的GBK字符。GBK字符每个占用2字节,可用2个16进制数表示。借助unicode()函数,我们可将其转化为Unicode字符,如下图。
其次,借助chardet编码检测模块,我们发现该list中中文部分编码为“windows-1252”,英文部分编码为“ascii”。
最后,通过查找资料,我发现cmd默认编码为GBK,借助chcp命名可以改变编码。
chcp 65001
换成UTF-8代码页,在命令行标题栏上点击右键,选择”属性”->”字体”,将字体修改为True Type字体”Lucida Console”,然后点击确定将属性应用到当前窗口。
chcp 936
换回默认的GBK。
chcp 437
美国英语。
问题结论
真爱生命,远离微软