前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python编码encode和decod

python编码encode和decod

作者头像
py3study
发布2020-01-09 10:35:07
1.1K0
发布2020-01-09 10:35:07
举报
文章被收录于专栏:python3python3

计算机里面,编码方法有很多种,英文的一般用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.编码

代码语言:javascript
复制
#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)

输出的结果为:

代码语言:javascript
复制
开始执行更新命令
开始执行更新命令
��ʼִ�и�������

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

代码语言:javascript
复制
#encoding=utf-8
a = '中文'
print a.decode('g')
print [a.decode('g')]

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

代码语言:javascript
复制
中文
[u'\u4e2d\u6587']

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

代码语言:javascript
复制
#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

代码语言:javascript
复制
a = '中文'
print a.decode('utf-16')

如果用utf-16解码方法解码utf-8的字符串,程序并不会报错(可能因为它们的编码方式相似),但是返回的是乱码:

如果一个字符串为unicode码,又没有u标识,可以这样来转换成中文

代码语言:javascript
复制
a='\u8054\u76df\u533a'
b="u'%s'"%a

print eval(b)

后记

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

代码语言:javascript
复制
[u'\u76ee\u6807\u533a\u670d']
['\xe7\x9b\xae\xe6\xa0\x87\xe5\x8c\xba\xe6\x9c\x8d']

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档