Python2.x中文乱码问题解决方法


Posted in Python onJune 02, 2015

Python中乱码问题是一个很头痛的问题。
在Python3中,对中文进行了全面的支持,但在Python2.x中需要进行相关的设置才能使用中文。否则会出现乱码

Python2.x中文乱码问题解决方法

【问题原因】

在Python2.x中主要是字符编码的问题,处理不好的话,会导致乱码。Python默认采取的ASCII编码,字母、标点和其他字符只使用一个字节来表示,但对于中文字符来说,一个字节满足不了需求。

>>> import sys  

>>> sys.getdefaultencoding()  

'ascii' 

为了能在计算机中表示所有的中文字符,中文编码采用两个字节表示。如果中文编码和ASCII混合使用的话,就会导致解码错误,从而才生乱码。而CMD下默认的编码方式为:GBK,所以就造成了上面的乱码!

Python2.x中文乱码问题解决方法

采用两个字节的中文编码标准有:GB2312、GBK、BIG5等。

【处理办法】

为了将各种不同的语言包含在统一的字符集中,满足国际间的信息交流,国际上制订了UNICODE字符集,包含了世界上所有语言字符,这些字符具有唯一的编码,通过使用UNICODE字符集可以满足跨语言的文字处理,避免乱码的产生。
i)  交互式命令中:一般不会出现乱码,无需做处理

Python2.x中文乱码问题解决方法

ii) py脚本文件中:跨字符集必须做设置,否则乱码。
首先在开头一句添加:

# coding = utf-8  

# 或  

# coding = UTF-8  

# 或  

# -*- coding: utf-8 -*- 

其次需将文件保存为UTF-8的格式!

上面那一句仅仅是告诉Python编译器:脚本中包含了非ASCII字符,并未进行转换。
如果要将字符编码从默认的ASCII改为UTF-8,需要在保存的时候选择保存为UTF-8格式。

如果是用NODEPAD打开,【另存为】-->UTF-8即可

Python2.x中文乱码问题解决方法

如果是用IDLE打开,【Options】-> 【Configure IDLE】->【General】

Python2.x中文乱码问题解决方法

上面的设置,可以保证IDLE,运行F5,能正常输出中文。

【编码解码】

在开头添加了# -*- coding: utf-8 -*-并将文件保存为UTF-8格式,仍然不能保证能输出正常输出中文,
不同的编辑器,如VIM,IDLE,Eclipse使用的输出编码都是不一致的。
所以,在一个地方能正常输出中文,在另外一个地方就未必。所以还必须做编码解码设置!

encode:编码
decode:解码

必须保证编码、解码的对象是同一个。比如说UTF-8方式编码, 必须再用UTF-8进行解码即可。

所以最终解决办法,还必须先按原先的方式解码,再按控制台格式重新编码:比如CMD默认是GBK方式
则必须使用如下方式:

Python2.x中文乱码问题解决方法

正确输出结果:

Python2.x中文乱码问题解决方法

【其他说明】
1.在Python3中,对中文的支持非常全面,源文件默认保存为UTF-8的编码,这样一来,不但可以在源代码中使用中文,而且变量名也可以使用中文,比如说:

>>> 中国 = 'Chinese'  

>>> print(中国)  

Chinese 

2.在Python3中,不需要来回的编解码,并且字符串对象也没有decode和encode方法。
Python 相关文章推荐
Python读写Excel文件的实例
Nov 01 Python
Python定时执行之Timer用法示例
May 27 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python实现操作文件(文件夹)
Oct 31 Python
python中sys模块是做什么用的
Aug 16 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 Python
python实现的守护进程(Daemon)用法实例
Jun 02 #Python
Python中使用ElementTree解析XML示例
Jun 02 #Python
Python文档生成工具pydoc使用介绍
Jun 02 #Python
自己使用总结Python程序代码片段
Jun 02 #Python
python执行子进程实现进程间通信的方法
Jun 02 #Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 #Python
使用pdb模块调试Python程序实例
Jun 02 #Python
You might like
PHP 存储文本换行实现方法
2010/01/05 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
PHP概率计算函数汇总
2015/09/13 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
从零学Python之hello world
2014/05/21 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
详解flask表单提交的两种方式
2018/07/21 Python
ipython和python区别详解
2019/06/26 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
python实现简单井字棋小游戏
2020/03/05 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
空指针到底是什么
2012/08/07 面试题
物流合作计划书
2014/01/10 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
cf战队收人广告词
2014/03/14 职场文书
洗手间标语
2014/06/23 职场文书
文体活动总结
2015/02/04 职场文书
评职称个人总结
2015/03/05 职场文书
道歉短信大全
2015/05/12 职场文书
2015年妇委会工作总结
2015/05/22 职场文书