学习python处理python编码问题


Posted in Python onMarch 13, 2011

概括、从python1.6开始就可以处理unicode字符了。
一、几种常见的编码格式。
1.1、ascii,用1个字节表示。
1.2、UTF-8,用1个至三个字节表示,表示ascii码时只占用1个字节,ascii编码是UTF-8的子集。
1.3、UTF-16,用2个字节表示,在python中,unicode的含义就是UTF-16。
二、python源文件的编码与解码,我们写的python程序从产生到执行的过程如下:
编辑器---->源代码---->解释器---->输出结果
2.1、编辑器决定源代码的编码格式(在编辑器中设定)
2.2、也必须要解释器知道源代码的编码格式(很遗憾很难从编码的数据获知源文件的编码格式)
2.3、补充:在Windows下当用UltraEdit把源代码存成UTF-8时,会在文件中记录BOM标志(不必祥究)这样ActivePython解释器会自动识别源文件是UTF-8格式,但是如果用eclipse编辑源文件,虽然在编辑器中指定文件编码为UTF-8,但是因为没有记入BOM标志,所以必须在源文件开始处加上#coding=utf-8,用注释来提示解释器源文件的编码方式挺有意思。
2.4、举例:例如我们要向终端输出"我是中国人"。

#coding=utf-8 告诉python解释器用的是utf-8编码,我用的是eclipse+pydev 
print "我是中国人" #源文件本身也要存成UTF-8编码

三、编码的转换,两种编码的转换要用UTF-16作为中转站。
举例:如果有一个文本文件jap.txt,里面有内容 "私は中国人です。",编码格式是日文编码SHIFT_JIS,
还有一个文本文件chn.txt,内容是"中华人民共和国",编码格式是中文编码GB2312。
我们如何把两个文件里的内容合并到一起并存储到utf.txt中并且不显示乱码呢,可以采用把两个文件的内容都转成UTF-8格式,因为UTF-8里包含了中文编码和日文编码。
#coding=utf-8 
try: 
JAP=open("e:/jap.txt","r") 
CHN=open("e:/chn.txt","r") 
UTF=open("e:/utf.txt","w") 
jap_text=JAP.readline() 
chn_text=CHN.readline() 
#先decode成UTF-16,再encode成UTF-8 
jap_text_utf8=jap_text.decode("SHIFT_JIS").encode("UTF-8") #不转成utf-8也可以 
chn_text_utf8=chn_text.decode("GB2312").encode("UTF-8")#编码方式大小写都行utf-8也一样 
UTF.write(jap_text_utf8) 
UTF.write(chn_text_utf8) 
except IOError,e: 
print "open file error",e

四、Tk库支持ascii,UTF-16,UTF-8
#coding=utf-8 
from Tkinter import * 
try: 
JAP=open("e:/jap.txt","r") 
str1=JAP.readline() 
except IOError,e: 
print "open file error",e 
root=Tk() 
label1=Label(root,text=str1.decode("SHIFT_JIS")) #如果没有decode则显示乱码 
label1.grid() 
root.mainloop()

以上是学习python处理python编码的基本过程,希望对大家有帮助。
Python 相关文章推荐
Python使用爬虫猜密码
Feb 19 Python
Python实现视频下载功能
Mar 14 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
200行python代码实现2048游戏
Jul 17 Python
深入学习python多线程与GIL
Aug 26 Python
python3.4中清屏的处理方法
Jul 06 Python
Python如何解除一个装饰器
Aug 07 Python
如何在python中实现线性回归
Aug 10 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 Python
bat批处理之字符串操作的实现
Mar 16 Python
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 #Python
布同 统计英文单词的个数的python代码
Mar 13 #Python
python将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 #Python
布同自制Python函数帮助查询小工具
Mar 13 #Python
Python中的文件和目录操作实现代码
Mar 13 #Python
python 中的列表解析和生成表达式
Mar 10 #Python
Python中使用中文的方法
Feb 19 #Python
You might like
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP处理会话函数大总结
2015/08/05 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
深入理解python中的select模块
2017/04/23 Python
python flask安装和命令详解
2019/04/02 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
电厂厂长岗位职责
2014/01/02 职场文书
入党自我评价优缺点
2014/01/25 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
同学聚会感言一句话
2015/07/30 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
Oracle 触发器trigger使用案例
2022/02/24 Oracle