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通过正则查找微博@(at)用户的方法
Mar 13 Python
Python中特殊函数集锦
Jul 27 Python
Python中join函数简单代码示例
Jan 09 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
学习Python列表的基础知识汇总
Mar 10 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
python tkinter Entry控件的焦点移动操作
May 22 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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设计模式 Template (模板模式)
2011/06/26 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
Javascript里使用Dom操作Xml
2006/09/20 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
JSON 数据格式详解
2017/09/13 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
python选择排序算法实例总结
2015/07/01 Python
Python 装饰器深入理解
2017/03/16 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
python3.x实现发送邮件功能
2018/05/22 Python
高中生毕业学习总结的自我评价
2013/11/14 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
介绍信怎么写
2015/05/05 职场文书
python办公自动化之excel的操作
2021/05/23 Python
Python 键盘事件详解
2021/11/11 Python
python自动化测试之Selenium详解
2022/03/13 Python
Win10 Anaconda安装python-pcl
2022/04/29 Servers