Python IDLE 中文乱码问题

最近忙完了一个比较大的 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‘我是中国人‘

我是中国人

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

时间: 2024-08-28 21:29:10

Python IDLE 中文乱码问题的相关文章

{转}Python IDLE中文乱码

http://hi.baidu.com/yobin/item/166e3a46537781d3c1a59257 乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了. 解决方法:在控制台打印的地方用一个转码就ok了,打印的时候这么写:print myname.decode('UTF-8').encode('GBK') 比较通用的方法应该是:import

Python解决中文乱码问题

在Python中内部所有编码都是Unicode,Unicode属于中转码,一般来说,是先把乱码转化为中转码,再转化为我 们需要的编码,转换过程为decode -> unicode -> encode. #coding:utf-8 #-*- coding:utf-8 -*- import sys print sys.getdefaultencoding() print '中国' f = open('Hello.txt') data = f.read() f.close() print data.

python MySQLdb中文乱码

Python操作MySQL需要安装Python-MySQL可以从网上搜索一下,和一般的Python包一样安装 安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验了一下挺好用,不过又发现了烦人的乱麻问题,最后用了几个办法,解决了! 我用了下面几个措施,保证MySQL的输出没有乱麻:    1 Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)    2 MySQL数据库charset=utf-8     3 Python连

win10下使用vscode调试python输出中文乱码的解决办法

今天在vscode中调试一个python脚本时发现中文乱码了,折腾了好一会儿才找到原因,记录一下. 很简单的一句代码测试一下: # -*- coding: utf-8 -*- print('乱码不?') 文件编码设置的也是utf-8,但是调试就是乱码,网上看大都是说设置PYTHONIOENCODING=UTF8的环境变量,尝试过发现还是不行. 其实问题在于windows下的cmd或者PS终端都是默认GBK编码,VSCODE调试时是调用的cmd的,如果把文件头和编码都改成GBK就不会乱码了,但是考

python爬虫中文乱码问题(request方式爬取)

https://blog.csdn.net/guoxinian/article/details/83047746 req = requests.get(url)返回的是类对象 其包括的属性有: req.encoding:返回编码方式 req.text:text返回的是处理过的Unicode型的数据 req.content:content返回的是bytes型的原始数据 content是把内容bytes返回. 而text是decode成Unicode. 如果headers没有charset字符集的化

Python beautifulsoup 中文乱码

在爬百度"今日热点事件排行榜"的时候发现打印在控制台的中文全部显示乱码,开始怀疑控制台的原因导致了乱码,后来输出一个中文,发现显示正常. #-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup res = requests.get("http://top.baidu.com/buzz?b=341&fr=topbuzz_b1&qq-pf-to=pcqq.discussion"

Python输出中文乱码问题

//建立一个文件test.txt,文件格式用ANSI,内容为: //abc中文 //用python来读取 # coding=gbk print open("Test.txt").read() //结果:abc中文 //把文件格式改成UTF-8: //结果:abc涓枃 //显然,这里需要解码: # coding=gbk import codecs print open("Test.txt").read().decode("utf-8") //结果

python matplotlib中文乱码

1. 找到matplotlib配置文件matplotlibrc,在python安装目录下 我的是C:\Python27\Lib\site-packages\matplotlib\mpl-data 2. #font.family, 将其注释去掉,冒号后面的值改为Microsoft YaHei 3. #font.sans-serif, 将其注释去掉,并将Microsoft YaHei添加到冒号后面的最前面 4. 拷贝文件.C:\Windows\Fonts\中找到 微软雅黑对应的字体文件msyh.tt

python爬虫中文乱码问题

用urllib做一个简单的功能,抓取网页,然后打印,发现中文部分输出异常,全是16进制,如图 后面百度了一下,看了几张帖子,终于找到了解决方法,只需要将结果decode一下就ok,decode的编码根据不同的网站都不一样,一般为utf-8 之后输出结果正常