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下使用状态机的教程
Apr 11 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
基python实现多线程网页爬虫
Sep 06 Python
视觉直观感受若干常用排序算法
Apr 13 Python
Python简单读取json文件功能示例
Nov 30 Python
python批量获取html内body内容的实例
Jan 02 Python
解决python文件双击运行秒退的问题
Jun 24 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
python encrypt 实现AES加密的实例详解
Feb 20 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 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中替换键名的简易方法示例详解
2014/01/07 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
php实现购物车功能(下)
2016/01/05 PHP
详解YII关联查询
2016/01/10 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Python request中文乱码问题解决方案
2020/09/17 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
毕业生自我鉴定
2013/11/05 职场文书
专家推荐信模板
2014/05/09 职场文书
工伤事故证明
2014/10/20 职场文书
护理见习报告范文
2014/11/03 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang