学习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复制文件代码实现
Dec 23 Python
进一步探究Python中的正则表达式
Apr 28 Python
Python实现随机选择元素功能
Sep 14 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
Python3搭建http服务器的实现代码
Feb 11 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
Python模块常用四种安装方式
Oct 20 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 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 GD库相关图像生成和处理函数小结
2016/09/30 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
ios中视频的最后一桢问题解决
2019/05/14 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
python实现简易内存监控
2018/06/21 Python
Python之循环结构
2019/01/15 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
管理站站长岗位职责
2013/11/27 职场文书
入职担保书范文
2014/05/21 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
python 网络编程要点总结
2021/06/18 Python