文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python编码encode和decod

2023-01-31 02:14

关注

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯