学习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之入门(三)序列
May 25 Python
Python中的exec、eval使用实例
Sep 23 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
浅谈python类属性的访问、设置和删除方法
Jul 25 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 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 采集程序 常用函数
2008/12/18 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
vue-router的两种模式的区别
2019/05/30 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
助学感谢信范文
2015/01/21 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
法定代表人免职证明
2015/06/24 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
护理工作心得体会
2016/01/22 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers