学习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中的文件和目录操作实现代码
Mar 13 Python
21行Python代码实现拼写检查器
Jan 25 Python
Python实现的下载网页源码功能示例
Jun 13 Python
Python实现感知机(PLA)算法
Dec 20 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 Python
Python如何实现邮件功能
May 27 Python
Python如何实现远程方法调用
Aug 07 Python
python基于爬虫+django,打造个性化API接口
Jan 21 Python
python如何进行基准测试
Apr 26 Python
Python办公自动化解决world文件批量转换
Sep 15 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 curl模拟post提交数据示例
2013/12/31 PHP
php的curl封装类用法实例
2014/11/07 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
交通文明倡议书
2014/05/16 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python