Python字符串编码转换 encode()和decode()方法详细说明

 更新时间:2021年12月12日 10:34:02   作者:C语言中国网  
这篇文章主要介绍了Python字符串编码转换 encode()和decode()方法详细的说明,下面文章围绕encode()和decode()方法的相相关资料展开内容,具有一定的价值,需要的朋友卡通参考一下

前言:

我们知道,最早的字符串编码是 ASCII 编码,它仅仅对 10 个数字、26 个大小写英文字母以及一些特殊字符进行了编码。ASCII 码做多只能表示 256 个符号,每个字符只需要占用 1 个字节。

随着信息技术的发展,各国的文字都需要进行编码,于是相继出现了 GBKGB2312、UTF-8 编码等,其中 GBK 和 GB2312 是我国制定的中文编码标准,规定英文字符母占用 1 个字节,中文字符占用 2 个字节;而 UTF-8 是国际通过的编码格式,它包含了全世界所有国家需要用到的字符,其规定英文字符占用 1 个字节,中文字符占用 3 个字节。

Python 3.x 默认采用 UTF-8 编码格式,有效地解决了中文乱码的问题。

Python 中,有 2 种常用的字符串类型,分别为 str bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() decode() 方法进行转换。

1.Python encode()方法

encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为“编码”。

encode() 方法的语法格式如下:

str.encode([encoding="utf-8"][,errors="strict"])

注意:格式中用 [] 括起来的参数为可选参数,也就是说,在使用此方法时,可以使用 [] 中的参数,也可以不使用。

该方法各个参数的含义如表 1 所示。

表 1 encode()参数及含义:

参数 含义
str 表示要进行转换的字符串。
encoding = "utf-8" 指定进行编码时采用的字符编码,该选项默认采用 utf-8 编码。例如,如果想使用简体中文,可以设置 gb2312。

当方法中只使用这一个参数时,可以省略前边的“encoding=”,直接写编码格式,例如 str.encode("UTF-8")。
errors = "strict" 指定错误处理方式,其可选择值可以是:
  • strict:遇到非法字符就抛出异常。
  • ignore:忽略非法字符。
  • replace:用“?”替换非法字符。
  • xmlcharrefreplace:使用 xml 的字符引用。
该参数的默认值为 strict。

注意:使用 encode() 方法对原字符串进行编码,不会直接修改原字符串,如果想修改原字符串,需要重新赋值。

【例 1】将 str 类型字符串“C语言中文网”转换成 bytes 类型。

>>> str = "C语言中文网"
>>> str.encode()
b'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'

此方式默认采用 UTF-8 编码,也可以手动指定其它编码格式,例如:

>>> str = "C语言中文网"
>>> str.encode('GBK')
b'C\xd3\xef\xd1\xd4\xd6\xd0\xce\xc4\xcd\xf8'

2.Python decode()方法

encode() 方法正好相反,decode() 方法用于将 bytes 类型的二进制数据转换为 str 类型,这个过程也称为“解码”。

decode() 方法的语法格式如下:

bytes.decode([encoding="utf-8"][,errors="strict"])

该方法中各参数的含义如表 2 所示。

表 2 decode()参数及含义:

参数 含义
bytes 表示要进行转换的二进制数据。
encoding="utf-8" 指定解码时采用的字符编码,默认采用 utf-8 格式。当方法中只使用这一个参数时,可以省略“encoding=”,直接写编码方式即可。

注意,对 bytes 类型数据解码,要选择和当初编码时一样的格式。
errors = "strict" 指定错误处理方式,其可选择值可以是:
  • strict:遇到非法字符就抛出异常。
  • ignore:忽略非法字符。
  • replace:用“?”替换非法字符。
  • xmlcharrefreplace:使用 xml 的字符引用。
该参数的默认值为 strict。

【例 2】

>>> str = "C语言中文网"
>>> bytes=str.encode()
>>> bytes.decode()
'C语言中文网'

注意:如果编码时采用的不是默认的 UTF-8 编码,则解码时要选择和编码时一样的格式,否则会抛出异常,例如:

>>> str = "C语言中文网"
>>> bytes = str.encode("GBK")
>>> bytes.decode()  #默认使用 UTF-8 编码,会抛出以下异常
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    bytes.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 1: invalid continuation byte
>>> bytes.decode("GBK")
'C语言中文网'

到此这篇关于Python字符串编码转换 encode()decode()方法详细说明的文章就介绍到这了,更多相关Python encode()和decode()方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python可视化之颜色映射详解

    python可视化之颜色映射详解

    Python的可视化有很多种,这篇文章主要介绍了Python可视化的颜色映射,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • python编写接口测试文档(以豆瓣搜索为例)

    python编写接口测试文档(以豆瓣搜索为例)

    接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,这篇文章主要给大家介绍了关于python编写接口测试文档,本文以豆瓣搜索功能为例,需要的朋友可以参考下
    2021-07-07
  • 浅谈matplotlib中FigureCanvasXAgg的用法

    浅谈matplotlib中FigureCanvasXAgg的用法

    这篇文章主要介绍了浅谈matplotlib中FigureCanvasXAgg的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python中decimal.Decimal类型和float类型的比较

    Python中decimal.Decimal类型和float类型的比较

    这篇文章主要介绍了Python中decimal.Decimal类型和float类型的比较,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 使用pytorch进行张量计算、自动求导和神经网络构建功能

    使用pytorch进行张量计算、自动求导和神经网络构建功能

    pytorch它是一个基于Python的开源深度学习框架,它提供了两个核心功能:张量计算和自动求导,这篇文章主要介绍了使用pytorch进行张量计算、自动求导和神经网络构建,需要的朋友可以参考下
    2023-04-04
  • Pytorch关于Dataset 的数据处理

    Pytorch关于Dataset 的数据处理

    这篇文章主要介绍了Pytorch关于Dataset 的数据处理,学习如何对卷积神经网络编程;首先,需要了解Pytorch对数据的使用,也是在我们模型流程中对数据的预处理部分,下面我们就一起进入文章查看具体处理过程吧
    2021-12-12
  • 详解pytorch tensor和ndarray转换相关总结

    详解pytorch tensor和ndarray转换相关总结

    这篇文章主要介绍了详解pytorch tensor和ndarray转换相关总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python flask几分钟实现web服务的例子

    python flask几分钟实现web服务的例子

    今天小编就为大家分享一篇python flask几分钟实现web服务的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Tensorflow实现部分参数梯度更新操作

    Tensorflow实现部分参数梯度更新操作

    今天小编就为大家分享一篇Tensorflow实现部分参数梯度更新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python进行数据提取的方法总结

    Python进行数据提取的方法总结

    数据提取是分析师日常工作中经常遇到的需求。如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔数,大于5000元的贷款数量等等。本篇文章介绍如何通过python按特定的维度或条件对数据进行提取,完成数据提取需求。
    2016-08-08

最新评论