925 0

[休闲其它] 麦子学院教你学习python处理python编码 [推广有奖]

  • 0关注
  • 8粉丝

本科生

33%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
1.0000
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
1159 点
帖子
60
精华
0
在线时间
40 小时
注册时间
2015-7-14
最后登录
2015-9-17

楼主
一叶一菩提、 发表于 2015-7-21 11:55:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

近日,麦子学院Sundy老师在他的公开课中提到:从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编码的基本过程,希望对大家有帮助。更多视频教程,请登录麦子学院官网查询(http://www.maiziedu.com/)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Python处理 python ultraedit 希望对大家有帮助 unicode python 公开课 源代码 解释器 编辑器

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-6 18:01