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的Django框架加载模版的方式
Jul 20 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
python爬取酷狗音乐排行榜
Feb 20 Python
20行python代码的入门级小游戏的详解
May 05 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Python英文文章词频统计(14份剑桥真题词频统计)
Oct 13 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
python 连续不等式语法糖实例
Apr 15 Python
python判断是空的实例分享
Jul 06 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 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
BBS(php & mysql)完整版(四)
2006/10/09 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
Python中用sleep()方法操作时间的教程
2015/05/22 Python
利用Python开发微信支付的注意事项
2016/08/19 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
python如何求圆的面积
2020/07/01 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
python绘制雷达图实例讲解
2021/01/03 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
师范生自荐信范文
2013/10/06 职场文书
党员干部公开承诺书
2014/03/26 职场文书
项目投资意向书
2014/04/01 职场文书
班级读书活动总结
2014/06/30 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
心理学培训心得体会
2016/01/22 职场文书