学习python处理python编码问题

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

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

3、编码的转换,两种编码的转换要用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 

4、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编码的基本过程,但愿对你们有帮助
相关文章
相关标签/搜索