python中字符串的编码和解码
1. 常用的编码
- ASCII:只能表示一些字母,数字和特殊的字符,占一个字节
- GBK:国家简体中文字符集和繁体字符集,兼容ASCII,占两个字节
- Unicode:能够表示全世界上所有的字符,Unicode有人说占4个字节也有人说占2个字节,但中文占2个字节
- UTF-8:Unicode的压缩版,占1~3个字节,其中中文占三个字节
2.补充:计算机表示的单位:
bit: 位,计算机最小的表示单位
bytes:字节,最小的存储单位,1bytes=8bit,1bytes简写成1B
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
......
3.ASCII编码
ASCII编码是基于拉丁字母一套编码,主要是显示现代英语和其西欧语言,是最早通用的单字节编码系统,具体ASCII对照表如下:

在对照表中需要记住的是大写字母A的编码是65,小写字母a的编码的97即可。
在python中可以使用chr和ord方法进行转换:
# 将数字类型转换成ASCII对应的字符
print(chr(97)) # a
# 将数字转换成对应的数据
print(ord("A")) # 65
# 或者使用
但随着事件的发展,ASCII编码扩展到了256个字符,编码 对照表如下:

其中后128个字符称为扩展ASCII码
2.GBK和GB2312编码
由于ASCII编码只能由256个字符组成,然只能由1个字节来表示中文是不可能的,因此制定了GB2312编码,用来表示中文的对照表
4.Unicode
为了解决各个国家编码冲突的问题,Unicode编码就因此而生,Unicode把所有语言都统一到一套编码里面,就会避免冲突,产生乱码。
Unicodeb标准在不断发展,最常用的是用两个字节表示一个字符,也有的字符是4个字节,但是中文是占两个字节。如果统一成Unicode编码,在存储和传输上就不划算
5.UTF-8编码
为了解决Unicode编码存储过大的问题,就推出了可变长编码UTF-8,UTF-8编码把一个Unicode字符依据不同的数据大小编程1~6个字节,其中中文就占3个字节
6.编码和解码
1.编码操作
可以通过encode进行编码,其中语法如下:
- 对字符串进行ASCII编码(只能转换数字,英文字母和一些符号)
# 方式1: 通过bytes方法
bytes('a', 'ASCII')
# 方式2: 通过encode方法进行
'a'.encode('ASCII')
- 将字符串转换成gbk编码格式
# 方式1: 通过encode方法进行
print('你好'.encode('GBK')) # 编码之后的结果为:b'\xc4\xe3\xba\xc3'
# 方式2: 通过bytes类型
print(bytes('我爱你', 'GBK')) # 编码之后的结果为:b'\xce\xd2\xb0\xae\xc4\xe3'
- 将字符串转换成Unicode编码格式
# 方式1: 通过encode方法进行
print('你好'.encode('unicode_escape')) # 编码之后的结果为:b'\\u4f60\\u597d'
# 方式2: 通过bytes类型
print(bytes('我爱你', 'unicode_escape')) # 编码之后的结果为:b'\\u6211\\u7231\\u4f60'
- 将字符串转换成UTF-8编码格式
# 方式1: 通过encode方法进行
print('你好'.encode('utf-8')) # 编码之后的结果为:b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 方式2: 通过bytes类型
print(bytes('我爱你', 'utf-8')) # 编码之后的结果为:b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'
2.解码操作
- 将GBK编码格式转换成字符串
# 通过decode方法解码
print(b'\xc4\xe3\xba\xc3\xce\xd2\xb0\xae\xc4\xe3'.decode('GBK')) # 解码之后结果为:你好我爱你
- 将UTF-8编码格式转换成字符串
# 通过decode方法解码
print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'.decode('utf-8')) # 解码之后结果为:你好我爱你
- 将Uniconde编码格式转换成字符串
# 通过decode方法解码
print(b'\\u4f60\\u597d\\u6211\\u7231\\u4f60'.decode('GBK')) # 解码之后结果为:你好我爱你
python中字符串的编码和解码的更多相关文章
- Python中进行Base64编码和解码
Base64编码 广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容 ...
- python中的URL编码和解码
python中的URL编码和解码:test.py # 引入urllib的request模块 import urllib.request url = 'https://www.douban.com/j/ ...
- Python中字符的编码与解码
1 文本和字节序列 我们都知道字符串,就是由一些字符组成的序列构成串,那么字符又是什么呢?计算机只能识别二进制的东西,那么计算机又为什么会显示我们的汉字,或者是某个字母呢? 由于最早发明使用计算机是美 ...
- Python3中字符串的编码与解码以及编码之间转换(decode、encode)
一.编码 二.编码与解码 Python3中对py文件的默认编码是urf-8.但是字符串的编码是Unicode. 由于Unicode采用32位4个字节来表示一个字符,存储和传输太浪费资源,所以传输和存储 ...
- Python中字符串的使用
这篇文章主要介绍python当中用的非常多的一种内置类型——str.它属于python中的Sequnce Type(序列类型).python中一共7种序列类型,分别为str(字符串),unicode( ...
- 【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要. 干货满满,建议收藏,欢迎大 ...
- python基础——字符串和编码
python基础——字符串和编码 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用 ...
- Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
Python中字符串String的基本内置函数与用法 首先我们要明白在python中当字符编码为:UTF-8时,中文在字符串中的占位为3个字节,其余字符为一个字节 下面就直接介绍几种python中字符 ...
- python中字符串的操作方法
python中字符串的操作方法大全 更新时间:2018年06月03日 10:08:51 作者:骏马金龙 我要评论这篇文章主要给大家介绍了关于python中字符串操作方法的相关资料,文中通过示例代码详细 ...
随机推荐
- equals()方法和hashCode()方法详解
equals()方法和hashCode()方法详解 1. Object类中equals()方法源代码如下所示: /** * Object类中的equals()方法 */ public boolean ...
- Hive 如何快速拉取大批量数据
用hive来做数仓类操作,或者大数据的运算,是没有疑问的,至少在你没有更多选择之前. 当我们要hive来做类似于大批量数据的select时,也许问题就会发生了变化. 1. 通用解决方案之分页 首先,我 ...
- 购买GPRS DTU时应该怎么选择
GPRS DTU如今是一种被广泛应用的物联网无线数据终端,主要是利用GPRS网络为用户提供无线长距离数据透传功能,在电力.环保.物流.气象等行业领域有着广泛应用.目前市场上的GPRS DTU产品眼花缭 ...
- 300万运算/秒 :VoltDB在电信行业基准测试上可线性扩展性能
01 总 体 概 述 VoltDB受到全球电信软件解决方案提供商的信赖,后者将其作为首选内存数据库来驱动他们部署在全球100多家运营商处的任务关键型应用.VoltDB受到青睐的原因在于其性能和功能不仅 ...
- 从比心APP源码的成功,分析陪玩系统源码应该如何开发
提起游戏陪玩系统,相信大家都不陌生.作为一名骨灰级的手游玩家,小编对于陪玩系统源码也有些了解.在互联网络发展愈发迅速的今天,游戏产业在一中领域中脱颖而出,据统计,手机游戏用户已经达到5.29亿,较20 ...
- C# 时间格式处理
C#的常用时间格式意义: 1字符"y"---year,年,yy显示13,yyyy显示2013 2字符"M"---Month,月份,M显示5,MM显示05 3字符 ...
- 容器场景要选择什么 Linux 版本?
容器的底层实现深度依赖于内核的众多特性,如 overlay 文件系统,namespace, cgroup 等,因此内核的功能和稳定性,在很大程度上,决定了整个容器PaaS平台的功能和稳定性.从 TKE ...
- PriorityQueue原理分析——基于源码
在业务场景中,处理一个任务队列,可能需要依照某种优先级顺序,这时,Java中的PriorityQueue(优先队列)便可以派上用场.优先队列的原理与堆排序密不可分,可以参考我之前的一篇博客: 堆排序总 ...
- 内网渗透 day13-漏洞复现
漏洞复现 目录 1. 永恒之蓝(445端口) 2. 手动微笑漏洞(21端口 vsftpd2.3.4版本) 3. ingres数据库DBMS后门(1524端口) 4. distcc漏洞(3632) 5. ...
- Module Federation原理剖析
[转自团队掘金原文: https://juejin.im/post/6895324456668495880] 为什么需要学习webpack5 module Federation原理呢?因为EMP微前端 ...