设为首页 收藏本站
查看: 1015|回复: 0

[经验分享] python编码encode和decode-11726068

[复制链接]

尚未签到

发表于 2018-8-6 11:32:50 | 显示全部楼层 |阅读模式
  计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk,utf-16等等。
  unicode是 utf-8,gbk,utf-16这些的父编码,这些子编码都能转换成unicode编码,然后转化成子编码,例如utf8可以转成unicode,再转gbk,但不能直接从utf8转gbk
  所以,python中就有两个方法用来解码(decode)与编码(encode),解码是子编码转unicode,编码就是unicode转子编码
  1.编码
  

#encoding=utf-8  
c=u'\u5f00\u59cb\u6267\u884c\u66f4\u65b0\u547d\u4ee4'
  
print c
  
print c.encode('utf8')
  
print c.encode('gbk')
  

  在这里,文件的编码方式为utf8,控制台的编码方式是utf8
  变量c是一个unicode编码的字符串(需要在引号前面加u)
  输出的结果为:
  

开始执行更新命令  
开始执行更新命令
  
��ʼִ�и�������
  

  因为控制台是utf8编码,所以unicode编码和utf8编码都能识别,但是gbk就不可以了
  2.解码
  

#encoding=utf-8  
a = '中文'
  
print a.decode('g')
  
print [a.decode('g')]
  

  这里a为utf8编码,decode方法将utf8解码为unicode编码
  输出结果:
  

中文  
[u'\u4e2d\u6587']
  

  由于控制台能识别unicode编码,所以需要把字符串放在列表里面才能看到unicode源码
  

#encoding=utf-8  
a = '中文'
  
print [a.decode('gbk')]
  

  因为a是utf8编码的,如果将a用gbk解码,程序就会报错
  UnicodeDecodeError: 'gbk' codec can't decode bytes in position 2-3: illegal multibyte sequence
  

a = '中文'  
print a.decode('utf-16')
  

  如果用utf-16解码方法解码utf-8的字符串,程序并不会报错(可能因为它们的编码方式相似),但是返回的是乱码:
  如果一个字符串为unicode码,又没有u标识,可以这样来转换成中文
  

a='\u8054\u76df\u533a'  
b="u'%s'"%a
  

  
print eval(b)
  

  

  后记
  1.如果想知道一个字符串是什么编码,可以print [字符串] 来看二进制码
  

[u'\u76ee\u6807\u533a\u670d']  
['\xe7\x9b\xae\xe6\xa0\x87\xe5\x8c\xba\xe6\x9c\x8d']
  

  第一个是unicode,第二个是utf-8

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-547573-1-1.html 上篇帖子: 1.Python介绍 下篇帖子: Python(入门小练习1)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表