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实现数通设备tftp备份配置文件示例
Apr 02 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python实现识别图片内容的方法分析
Jul 11 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
简单了解python高阶函数map/reduce
Jun 28 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python 日志logging模块用法简单示例
Oct 18 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Jupyter加载文件的实现方法
Apr 14 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 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/11/06 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
php服务器的系统详解
2019/10/12 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
javascript 实现map集合
2015/04/03 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
javascript实现下雨效果
2017/03/27 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
远程教育心得体会
2014/01/03 职场文书
社区工作者思想汇报
2014/01/13 职场文书
冬季安全检查方案
2014/05/23 职场文书
2014年卫生工作总结
2014/11/27 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
2015年加油站工作总结
2015/05/13 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js