Python IDLE 中文乱码问题

时间:2023-02-10 08:11:57

最近忙完了一个比较大的 GIS 软件系统,于是闲暇之余想研究一下开源的技术,纵观当前开源桌面 GIS 软件领域,最牛叉的莫过于大名鼎鼎的 Quantum GIS,简称 QGIS。做过 GIS 的人都知道,ESRI ArcGIS 是 GIS 软件领域迄今为止世界上最牛叉的一个,但由于是商业软件,故而其价格普通大众望而却步。于是,寻找一款开源免费的且功能又能与之睥睨的GIS软件就在所难免了。本人经过大量比较得出,QGIS 当之无愧!

可是对于我来说,由于我是搞 GIS 软件应用开发的,而且只精通 Java 和 .NET 技术,而 QGIS 只支持 C++ 和 Python 两种开发语言,对于大多数人来说,C++ 技术门槛着实有点难搞。本人也不例外,由于 Python 知名度越来越高,且越来越优秀,于是我选择了 Python···

说道重点了,玩过 Python 的人都知道,搞 Python 开发一般都是在 Python 自带的 IDLE 集成开发环境中写代码。当我选好书籍,装好 Python 软件并配置好一切相关环境之后,便开始了 Python 编程之旅···

刚开始一切都还 OK,跟着书本上一步一步来,一句“Hello Python!”字符串优雅地打印了出来···

慢着,我是中国人,打印点中文出来试试呗,于是我来一句 print '我是中国人',问题出来了,控制台打印出了一串类似’\xd6\xd0\xce\xc4′ 一样的鬼符。我顿时纳闷了,这玩意儿不能玩中文吗?于是跑去问谷歌、度娘等大婶,还是没有找到终极解决方案。于是我想起了一句话“求人不如求己”,自己根据多年 Java 和 .NET 的经验告诉自己,问题一定是出在 Encoding 上,终于功夫不负有心人,找到了解决的办法。

问题分析:

首先,我的 Windows 7 中默认的编码是 GBK 编码;

其次,在 Python 内部,默认的字符编码应该是跟操作系统一样,而我们中国人用的多数都是 Windows 中文系统,即默认是 GBK 编码。而在 IDLE 中,直接输入中文字符,其实就是 GBK 编码的;


分析到这里,理论上,应该是没问题的,为啥还是出鬼符呢?我们知道,在 Java 等其他语言中处理中文时,无一例外都跟 Encoding 有关。因此,Python 也不例外,既然环境什么的都没问题,那问题肯定在于源代码文件的编码和 IDLE 编辑器的编码在设置上出现了不一致,进而导致了问题的发生。顺着自己的思路,首先我把我自己的 Python 源码文件存成 Unicode 编码格式,然后再在源代码开始处加上如下这句:

# -*- coding: GBK -*-

...... 其他 Python 源代码 ......


然后,选择 IDLE 的菜单 Options -> Configure IDLE... 打开 IDLE 的配置选项,切换到 General 选项卡,找到 Default Source Encoding 设置项,选中 Locale-defined 选项,点击 Apply 按钮,再点击 OK 以便保存设置。

关闭退出 IDLE 并重写打开 IDLE 集成开发环境,此时你再试一下:


>>> print'我是中国人'

我是中国人


哈哈,恭喜您,成功了!漂亮优雅的“我是中国人”给打印了出来···