python 编码unicode 和 str
来源:互联网 发布:垃圾食品税收 知乎 编辑:程序博客网 时间:2024/05/21 14:42
转自 http://www.ituring.com.cn/article/1116
Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事。
不管怎样,字符串和字节包之间的界线是必然的,下面的图解非常重要,务请牢记于心:
字符串可以编码成字节包,而字节包可以解码成字符串。
>>> '€20'.encode('utf-8')b'\xe2\x82\xac20'>>> b'\xe2\x82\xac20'.decode('utf-8')'€20'
这个问题要这么来看:字符串是文本的抽象表示。字符串由字符组成,字符则是与任何特定二进制表示无关的抽象实体。在操作字符串时,我们生活在幸福的无知之中。我们可以对字符串进行分割和分片,可以拼接和搜索字符串。我们并不关心它们内部是怎么表示的,字符串里的每个字符要用几个字节保存。只有在将字符串编码成字节包(例如,为了在信道上发送它们)或从字节包解码字符串(反向操作)时,我们才会开始关注这点。
传入encode和decode的参数是编码(或codec)。编码是一种用二进制数据表示抽象字符的方式。目前有很多种编码。上面给出的UTF-8是其中一种,下面是另一种:
>>> '€20'.encode('iso-8859-15')b'\xa420'>>> b'\xa420'.decode('iso-8859-15')'€20'
编码是这个转换过程中至关重要的一部分。离了编码,bytes对象b'\xa420'只是一堆比特位而已。编码赋予其含义。采用不同的编码,这堆比特位的含义就会大不同:
>>> b'\xa420'.decode('windows-1255')'₪20'
据说百分之八十的金钱损失皆因使用错误的编码导致,因此务必小心谨慎。
0 0
- python 编码unicode 和 str
- python中的unicode和str编码
- python编码(str和unicode)
- unicode 和 str(Python字符编码解码)
- python的str和unicode以及编码的问题
- Python 中的 str 与 unicode 编码处理
- python unicode 和 str相互转化
- Python编码和Unicode
- Python编码和Unicode
- Python编码和Unicode
- Python中字符编码的总结和对比:Python 2.x的str和unicode vs Python 3.x的bytes和str
- 老中医---根治python编码问题(unicode,str等)
- 【Python】Python编码和Unicode
- python str unicode
- Python str unicode转换
- python unicode转str
- python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode 分类: python
- python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode
- 天龙八部之那些年,我们共同打过的木桶伯
- 【笔记】查找
- 继承中的构造和析构 继承和组合混搭情况下,构造函数、析构函数调用顺序研究
- 【年度总结】2014学习之路
- libevent evsignal_new() 信号事件回调函数未被触发。
- python 编码unicode 和 str
- jquery ajax后台向前台传list 前台用jquery $.each遍历list
- Android自动化基础—简单例子(启动相机拍照-重复执行1000次)
- 多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)
- HDU 1286 欧拉函数。
- 【笔记】查找
- 常用的一些macport命令
- iOS SQLite的使用
- 继承中的同名函数变量以及继承中的构造与析构