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/ironpython:从入门到精通
Oct 02 Python
Python类的基础入门知识
Nov 24 Python
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
python3中bytes和string之间的互相转换
Feb 09 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
如何通过python画loss曲线的方法
Jun 26 Python
Django 实现xadmin后台菜单改为中文
Nov 15 Python
基于python 取余问题(%)详解
Jun 03 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
用python写PDF转换器的实现
Oct 29 Python
利用Python批量识别电子账单数据的方法
Feb 08 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
从Python程序中访问Java类的简单示例
2015/04/20 Python
python开发中range()函数用法实例分析
2015/11/12 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
详解Python字符串切片
2019/05/20 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Django权限设置及验证方式
2020/05/13 Python
python中return如何写
2020/06/18 Python
Python自带的IDE在哪里
2020/07/01 Python
python爬取音频下载的示例代码
2020/10/19 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
行政前台岗位职责
2013/12/04 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
战友聚会邀请函
2014/01/18 职场文书
博士生专家推荐信
2014/09/26 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
英文自荐信范文
2015/03/25 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
开学第一周总结
2015/07/16 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
python 自动刷新网页的两种方法
2021/04/20 Python