python中字符串的编码与解码详析


Posted in Python onDecember 03, 2020

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对照表如下:

python中字符串的编码与解码详析

在对照表中需要记住的是大写字母A的编码是65,小写字母a的编码的97即可。

在python中可以使用chr和ord方法进行转换:

# 将数字类型转换成ASCII对应的字符
print(chr(97)) # a
# 将数字转换成对应的数据
print(ord("A")) # 65
# 或者使用

但随着事件的发展,ASCII编码扩展到了256个字符,编码 对照表如下:

python中字符串的编码与解码详析

其中后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字符串的编码与解码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中优化NumPy包使用性能的教程
Apr 23 Python
Python网络爬虫与信息提取(实例讲解)
Aug 29 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
获取python文件扩展名和文件名方法
Feb 02 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Python实现快速排序的方法详解
Oct 25 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
python读取文件指定行内容实例讲解
Mar 02 Python
python实现程序重启和系统重启方式
Apr 16 Python
keras打印loss对权重的导数方式
Jun 10 Python
python 爬取百度文库并下载(免费文章限定)
Dec 04 #Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 #Python
python3代码输出嵌套式对象实例详解
Dec 03 #Python
python3代码中实现加法重载的实例
Dec 03 #Python
python判断all函数输出结果是否为true的方法
Dec 03 #Python
django中cookiecutter的使用教程
Dec 03 #Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 #Python
You might like
PHP简单获取视频预览图的方法
2015/03/12 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
php实现的mongodb操作类
2015/05/28 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
javascript常用方法总结
2015/05/14 Javascript
javascript实现连续赋值
2015/08/10 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
Python中eval带来的潜在风险代码分析
2017/12/11 Python
用matplotlib画等高线图详解
2017/12/14 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
自荐信格式的六要素
2013/09/21 职场文书
军神教学反思
2014/02/04 职场文书
元旦活动感言
2014/03/08 职场文书
给校长的建议书400字
2014/05/15 职场文书
学校节能减排倡议书
2014/05/16 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
个人收入证明模板
2014/09/18 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
退税申请报告怎么写
2015/05/18 职场文书
环保证明
2015/06/23 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
晚会开幕词范文
2016/03/04 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python