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 01 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
使用Python实现BT种子和磁力链接的相互转换
Nov 09 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 Python
Python3 Random模块代码详解
Dec 04 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
opencv python 2D直方图的示例代码
Jul 20 Python
对python多线程与global变量详解
Nov 09 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
pandas 对日期类型数据的处理方法详解
Aug 08 Python
python如何实现单链表的反转
Feb 10 Python
python 遗传算法求函数极值的实现代码
Feb 11 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中的加密功能
2006/10/09 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python 使用type来定义类的实现
2019/11/19 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
美术指导助理求职信
2014/04/20 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
电力培训心得体会
2014/09/02 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
活动主持人开场白
2015/05/28 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android