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调用shell的方法
Nov 20 Python
python实现挑选出来100以内的质数
Mar 24 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
python如何读写csv数据
Mar 21 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
python实现名片管理系统项目
Apr 26 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
对django layer弹窗组件的使用详解
Aug 31 Python
python性能测量工具cProfile使用解析
Sep 26 Python
python爬虫---requests库的用法详解
Sep 28 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
python 自动刷新网页的两种方法
Apr 20 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学习之流程控制实现代码
2011/06/09 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
在Python的Django框架中编写编译函数
2015/07/20 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
党支部换届选举方案
2014/05/08 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
团代会邀请函
2015/02/02 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
《三国志》赏析
2019/08/27 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang
Python开发五子棋小游戏
2022/05/02 Python