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 相关文章推荐
kNN算法python实现和简单数字识别的方法
Nov 18 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
python入门前的第一课 python怎样入门
Mar 06 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
Python爬虫设置代理IP(图文)
Dec 23 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 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
zend framework多模块多布局配置
2011/02/26 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
php实现递归的三种基本方式
2020/07/04 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
js中关于一个分号的崩溃示例
2013/11/11 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
js中url对象化管理分析
2017/12/29 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
python数据结构之链表详解
2017/09/12 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
"引用"与多态的关系
2013/02/01 面试题
档案接收函范文
2014/01/10 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
Django如何与Ajax交互
2021/04/29 Python