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 相关文章推荐
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
django query模块
Apr 20 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
Python实现转换图片背景颜色代码
Apr 30 Python
Python如何绘制日历图和热力图
Aug 07 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
如何在python中实现ECDSA你知道吗
Nov 23 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简单命令代码集锦
2007/09/24 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
Python自动连接ssh的方法
2015/03/07 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
法人代表任命书范本
2014/06/05 职场文书
学生干部培训方案
2014/06/12 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
电影雨中的树观后感
2015/06/15 职场文书
大学生活感想
2015/08/10 职场文书
六年级情感作文之500字
2019/10/23 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python