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 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
python控制台中实现进度条功能
Nov 10 Python
Python温度转换实例分析
Jan 17 Python
Sanic框架安装与简单入门示例
Jul 16 Python
python将秒数转化为时间格式的实例
Sep 16 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
使用python+whoosh实现全文检索
Dec 09 Python
提升python处理速度原理及方法实例
Dec 25 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
如何用python识别滑块验证码中的缺口
Apr 01 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
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Open and Print a Word Document
2007/06/15 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python开发的HTTP库requests详解
2017/08/29 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
python 实现兔子生兔子示例
2019/11/21 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
深入了解python列表(LIST)
2020/06/08 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
如何写一份好的自荐信
2014/01/02 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
酒店端午节促销方案
2014/02/18 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
廉洁自律证明
2015/06/24 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书