博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python编码encode和decode
阅读量:7097 次
发布时间:2019-06-28

本文共 1213 字,大约阅读时间需要 4 分钟。

计算机里面,编码方法有很多种,英文的一般用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-8c=u'\u5f00\u59cb\u6267\u884c\u66f4\u65b0\u547d\u4ee4'print cprint c.encode('utf8')print c.encode('gbk')

在这里,文件的编码方式为utf8,控制台的编码方式是utf8

变量c是一个unicode编码的字符串(需要在引号前面加u)

输出的结果为:

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

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

2.解码

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

这里a为utf8编码,decode方法将utf8解码为unicode编码

输出结果:

中文[u'\u4e2d\u6587']

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

#encoding=utf-8a = '中文'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'"%aprint eval(b)

后记

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

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

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

转载于:https://blog.51cto.com/11736068/2045045

你可能感兴趣的文章
学习笔记:rsync命令实战
查看>>
Kali Linux Network Scanning Cookbook读书笔记之nmap
查看>>
基于文件夹目录生成CHM电子书
查看>>
[C#]提交表单
查看>>
awk用法:取列表最后一列
查看>>
网络监控系统的建立及部署(三)
查看>>
超级网管员——网络基础
查看>>
ThinkPHP邮件发送类
查看>>
nginx+gridfs+mongodb分布式图片存储系统
查看>>
MDaemon功能篇之优先级邮件
查看>>
通用权限管理系统组件从实现基本功能到让别人欣赏软件,把每个细节都做精做彻底...
查看>>
Linux操作系统中重定向命令行的技巧总结
查看>>
不仅仅是远程桌面,微软“桌面云”技术概览 (1)远程桌面协议 RDP 8.0
查看>>
校园网应用分析
查看>>
Python的面向对象、Class 概念与使用
查看>>
从传统运维到云运维演进历程之软件定义存储(三)下
查看>>
技术分享连载(二十)
查看>>
Java -- JDBC 学习--调用函数&存储过程
查看>>
关于PC或笔记本的一些安全设定
查看>>
DNS Security Tips
查看>>