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类继承用法实例分析
May 27 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
python使用Matplotlib画条形图
Mar 25 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
Django密码系统实现过程详解
Jul 19 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
Django 反向生成url实例详解
Jul 30 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
python 协程 gevent原理与用法分析
Nov 22 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
Aug 27 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对象Object的概念 介绍
2012/06/14 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python游戏地图最短路径求解
2019/01/16 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
外贸业务员的岗位职责
2013/11/23 职场文书
个人委托书范本
2014/04/02 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电