bytes类型和python中编码的转换方法
一、bytes类型
bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型。例如:
>>> a = "中国"
>>> a.encode("utf-8")
b'\xe4\xb8\xad\xe5\x9b\xbd'
py3中字符串都是Unicode编码,显示正常字符,其余编码的数据都以bytes类型显示。
bytes类型的作用:
计算机只能存储2进制, 我们的字符、图片、视频、音乐等想存到硬盘上,也必须以正确的方式编码成2进制后再存。
对于文字,我们可以以gbk编码,也可以以utf-8、ASCII编码。
对于图片,必须编码成PNG,JPEG等格式
对于音乐,必须编码成MP3,WAV等...
在python中, 数据转成2进制后不是直接以0101010的形式表示的,而是用一种叫bytes(字节)的类型来表示,其中用16进制表示的二进制字节,即一个16进制表示四位二进制,2个16进制代表一个字节。
在python中,字符串必须编码成bytes后才能存到硬盘上。如果不在文件头声明编码,python3在文件存储中默认用utf-8编码。
另外,python中,字符的编码例如gbk、utf-8、ASCII等还可以识别转换,而图片、音乐、视频等,编码不能识别,只能以bytes形式出现,传输存储。
二、python中编码的转换方法
编码转换是指将一种编码转成另外一种编码,比如 utf-8 to gbk。
编码转换的作用:
不同操作系统编码不同, utf-8在win上没办法直接看,因为windows是GBK编码的,得转成gbk。
反过来如果你的GBK字符相在Linux\Mac上正常显示,就得转成utf-8编码。
另外,或者在python中将字符串定义直接定义为unicode编码,引号前加u,在任何系统都正常显示:
a = u"word"
>>> a
u'word'
>>> type(a)
<type 'unicode'>
编码转换的方法:
decode()解码,encode()编码
UTF-8 --> decode 解码 --> Unicode
Unicode --> encode 编码 --> GBK / UTF-8
例如:
>>> a = "中国"
>>> b = a.encode("utf-8")
>>> print(b)
b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> b.decode("utf-8")
'中国'
注:以什么编码,就要以什么解码,要不然就出错或者乱码了
最新文章
- PHP设计模式之:单例模式
- 在Windows 7上安装MongoDB 2.6.7
- Subsets 解答
- 在 .NET中,一种更方便操作配置项的方法
- 如何用人工的方式将Excel里的一堆数字变成一个数组
- MFC控件第一讲.DC编程
- 8.异常_EJ
- ORA-00845 MEMORY_TARGET not supported on this system 的解决
- Canvas与javaScript特效笔记
- 用redis来实现Session保存的一个简单Demo
- qt QRegExp使用(搬运工)
- hdu 1754解题报告 (代码+注释)
- JS 数组对象根据下标拆分成新的数组
- 《AngularJS权威教程》
- insert-interval 插入区间
- Redis 启动警告错误解决[转]
- sass compass问题小结
- iOS网络框架 AFNetworking
- CSS Spritec下载,精灵图,雪碧图,初探之原理、使用
- sqlserver锁机制详解(sqlserver查看锁)
热门文章
- oc71--NSArray2
- Django - CBV装饰器实现用户登录验证
- 一个不错的jquery插件模版
- ACM_Ruin of Titanic(简单贪心)
- JSP 向 JavaScript 中传递数组
- post提交表单的数据查看方式(不是很理解,但要会看,可以找人商讨下,比如崔老师,自己再看一遍HTTP基础)
- EF 新增数据时提示it has a DefiningQuery and no <;InsertFunction>; element exists in the <;ModificationFunctionMapping>; element
- 在Swift中,如何像Objective-C定义可选接口?
- netty学习:UDP服务器与Spring整合
- HTML TabIndex属性