美文网首页程序员
再谈 Python字符串和编码

再谈 Python字符串和编码

作者: 清醒的cola | 来源:发表于2017-03-03 01:58 被阅读108次

字是给人看的而计算机只能处理数字。所以针对字需要编码。

那么怎样将字进行编码?

首先,挖了第一个坑,人们望着键盘上的字母、数字、符号掐指一算127个数字。 二进制 2的8次方为 256 戳戳有余,于是乎规定了 1个二进制位为1个 bit,8个二进制位为一个字节 byte,这样一个 byte 就可以用二进制最大数11111111 或者十进制最大数255代表“所有的字”了。

然而,他们忽略了大洋彼岸的大中华,霓虹,大朝鲜这些字量巨大的文化大国。本着取资本主义精华的精神各国制定了自己的字编码GB2312/Shift_JIS/Euc-kr 。然而问题来了,随着亚洲全面崛起,文化不断交流,中文+日文+韩文混用就会冲突(虽然日文假名本来就大量汉字).... 就会产生让程序猿捉狂的乱码。

这个时候,世界人民迫切需要一种包罗万象的编码,于是乎Unicode应运而生,怎么办到的呐?一个 byte 不够用,用两个 byte 嘛,实在不行三个 byte…. 可是那个年代呀,存储昂贵,带宽昂贵,英文国家白白浪费2倍加的空间呀,不能为了世界和平而自损三千呀。那怎么呐? 那就byte 变长呗。于是乎就变成了英文1个 byte,中文3个 byte,生僻字4-6个 byte,顺便还兼容了ASCII。其中UTF-8(8-bit Unicode Transformation Format)作为一种针对Unicode的可变长度字符编码,被广泛应用,完美收关。

回到 Python话题,岁月不饶人,在世界人民统一认识到Unicode才是未来的时候已经是1994年了。那么91年公开发布的 Python 自然默认还是沿用了ASCII。 作为变通Python2里所有的非英文都使用了u'...' 代表Unicode字符串。直到2008的 Python3才统一使用Unicode。已是后话。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

>>> print u'非英文'
非英文

>>> u'非英文'
u'\u975e\u82f1\u6587'  

>>> u'非英文'.encode('utf-8')
'\xe9\x9d\x9e\xe8\x8b\xb1\xe6\x96\x87'  

>>> '\xe9\x9d\x9e\xe8\x8b\xb1\xe6\x96\x87'.decode('utf-8')
u'\u975e\u82f1\u6587'

>>> print u'\u975e\u82f1\u6587'
非英文

漂亮的分割线

2008年,祖国承办了盛大的奥林匹克运动大会。Python3也迈进了Unicode,从此

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

>>> print("北京欢迎你") # 因为Unicode 所以默认就支持了中文
北京欢迎你

>>> "北京欢迎你".encode('utf-8')   # 字符串编码为字节流
b'\xe5\x8c\x97\xe4\xba\xac\xe6\xac\xa2\xe8\xbf\x8e\xe4\xbd\xa0'

>>>b'\xe5\x8c\x97\xe4\xba\xac\xe6\xac\xa2\xe8\xbf\x8e\xe4\xbd\xa0'.decode('utf-8')  #从字节流解码为字符串
'北京欢迎你'

现在,Python 的字符串类型str,在计算机内存中以Unicode表示,传输到网络或者保存到磁盘,需要将str字符串转成例如encode('utf-8')以字节为单位的bytes。

相关文章

  • 再谈 Python字符串和编码

    字是给人看的而计算机只能处理数字。所以针对字需要编码。 那么怎样将字进行编码? 首先,挖了第一个坑,人们望着键盘上...

  • Python中的字符串编码

    Python中的字符串编码 定义字符串 Python 中存在两种编码方式的字符串:ASCII 和 Unicode。...

  • python编码

    python编码 python编码简介 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,...

  • python 高级方法

    Python的字符串类型 字符编码方法 查看Python中的字符串编码名称,查看系统的编码 源文件字符集编码声明:...

  • Python编码问题

    默认编码 字符串 python2 文本字符串默认编码是ASCII,中文默认UTF-8python3 文本字符串默认...

  • python的unicode编码问题(以正则表达式为例)

    unicode是python的内部编码。字符串在Python内部的表示是unicode编码,因此,在做编码转换时,...

  • json与python

    Python 对象编码成 JSON 字符串 json.dumps 用于将 Python 对象编码成 JSON 字符...

  • 2018-11-08

    今天,我们深入学习了字符串。学习了字符串编码: python中的字符采用的是Unicode编码 a.什么是编码 ...

  • python3 (1)基础语法

    1、编码 python3 源码文件默认UTF-8编码,字符串Unicode字符串。可以不在py文件制定编码,pyt...

  • python 字符串前加u

    python中文编码问题,字符串前面加u

网友评论

    本文标题:再谈 Python字符串和编码

    本文链接:https://www.haomeiwen.com/subject/axklgttx.html