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里大整数相乘相关技巧指南
Sep 12 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python线性方程组求解运算示例
Jan 17 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
python实现flappy bird游戏
Dec 24 Python
浅谈python新式类和旧式类区别
Apr 26 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
如何使用Python进行PDF图片识别OCR
Jan 22 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
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
php简单分页类实现方法
2015/02/26 PHP
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
javascript实现微信分享
2014/12/23 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
vue移动端实现下拉刷新
2018/04/22 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
JavaScript如何操作css
2020/10/24 Javascript
Python读写文件方法总结
2015/06/09 Python
python简单猜数游戏实例
2015/07/09 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
房屋出租协议书
2014/04/10 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2015年司机工作总结
2015/04/23 职场文书
暂住证证明
2015/06/19 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python