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 专题九 Mysql数据库编程基础知识
Mar 16 Python
python算法演练_One Rule 算法(详解)
May 17 Python
python 读写中文json的实例详解
Oct 29 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
Python程序暂停的正常处理方法
Nov 07 Python
Python之字典对象的几种创建方法
Sep 30 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
很实用的一个完整email发送程序
2006/10/09 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
js 颜色选择插件
2017/01/23 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
详解python如何引用包package
2020/06/07 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
员工评语大全
2014/01/19 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
商业项目策划方案
2014/06/05 职场文书
大学生个人总结范文
2015/02/15 职场文书
自我工作评价范文
2015/03/06 职场文书
结婚纪念日感言
2015/08/01 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers