学习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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
python实现rsa加密实例详解
Jul 19 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python实现键盘控制鼠标移动
Nov 27 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 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作为Shell脚本语言使用
2006/10/09 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
PHP序列化操作方法分析
2016/09/28 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
Express进阶之log4js实用入门指南
2018/02/10 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
python数据处理实战(必看篇)
2017/06/11 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Python-接口开发入门解析
2019/08/01 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
基于Python正确读取资源文件
2020/09/14 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
应用服务器有那些
2012/01/19 面试题
新锐科技Java程序员面试题
2016/07/25 面试题
经典演讲稿范文
2013/12/30 职场文书
总裁办公室主任职责
2014/01/02 职场文书
警示教育活动总结
2014/05/05 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
关爱老人标语
2014/06/21 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库