python2.X,代码中指定了UTF-8,但是在cmd命令行窗口时,打印的中文仍然会乱码。
在python3不存在该问题
运行结果:
原因
中文windows默认的输出编码为gbk ,与脚本中定义的UTF-8不一样,所以出现了解码失败的情况。
相关推荐:《Python基础教程》
解决方法
有如下两种方法可以解决这个问题
方法一
我们可以通过先把中文解码为unicode,然后再转化为gbk来解决这个问题:
修改后运行结果:
方法二
当然,我们也可以通过改变cmd命令行窗口的输出格式来解决这个问题:
·chcp 65001 就是换成UTF-8代码页
·chcp 936 可以换回默认的GBK
但是这样就降低了脚本的兼容性,在其他环境运行的时候可能还会出现这样的错误,而且可能会影响其他脚本运行,所以推荐使用第一种方法。
⑵ 命令行下中文显示乱码,怎么解决
cmd命令行窗口显示中文乱码,多是因为cmd命令行窗口字符编码不匹配导致。
修改cmd窗口字符编码为UTF-8,命令行中执行:chcp 65001
切换回中文:chcp 936
这两条命令只在当前窗口生效,重启后恢复之前的编码。
切换cmd窗口字符编码有风险,例如切换过以后中文显示乱码,并且不能永久切换回原来模式,只能每次chcp 936。
cmd中文显示乱码永久解决方案,以切换回中文936为例:
打开不正常的 CMD命令提示符窗口后,单击窗口左上角的图标,选择弹出的菜单中的“默认值”,切换到第一个“选项”tab,将默认的代码页改为 936 后重启 CMD。重启cmd后还不能正常显示请继续往下看。
如果重启 CMD以后无法生效:窗口的“默认值”和“属性”没变,则进入注册表,在 HKEY_CURRENT_USER\Console下找到%SystemRoot%_system32_cmd.exe(如果没有codepage就不考虑了),codepage值改为 936(十进制)或 3a8(十六进制)。
936(十进制)是简体中文的,如是其它语言,则改为对应的代码。
部分字符编码对应代码:
65001——UTF-8
936——简体中文
950——繁体中文
437——美国/加拿大英语
932——日文
949——韩文
866——俄文
最后一个乱码原因:CMD 的“默认值”或“属性”窗口的“字体”选项卡中设定为可以显示中文字符的字体,并且确定字体文件没有被破坏,字体最好设置为默认的点阵字体。