Python encode()方法和decode()方法详解

作者:北城石桥 时间:2023-06-16 11:47:15 

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'

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语言'

来源:https://www.cnblogs.com/beichengshiqiao/p/17010011.html

标签:Python,encode(),decode()
0
投稿

猜你喜欢

  • python argparse的使用步骤(全网最全)

    2023-06-14 01:13:45
  • 妙用dw图层与表格进行网页布局

    2009-07-14 21:57:00
  • 简易的全屏透明遮罩(lightBox)

    2010-06-09 20:56:00
  • Python查找最长不包含重复字符的子字符串算法示例

    2021-05-25 23:05:02
  • 基于Python中单例模式的几种实现方式及优化详解

    2022-10-24 14:20:45
  • 微信小程序-拍照或选择图片并上传文件

    2023-09-04 20:22:45
  • ASP对FoxPro自由表(DBF文件)的操作

    2010-05-27 12:20:00
  • java 截取字符串(判断汉字)

    2023-06-29 23:38:19
  • 建立三层结构的ASP应用程序

    2009-01-21 19:41:00
  • asp用正则过滤html标签

    2008-01-19 16:34:00
  • python结合shell查询google关键词排名的实现代码

    2023-10-11 21:28:47
  • python中threading和queue库实现多线程编程

    2023-01-12 13:59:08
  • python Django 创建应用过程图示详解

    2022-10-29 03:04:40
  • 用PHP+java实现自动新闻滚动窗口

    2023-11-22 12:31:01
  • 显示你个性的鼠标指针

    2011-06-14 09:41:41
  • php让json_encode不自动转义斜杠“/”的方法

    2023-08-19 17:04:28
  • HMAC算法--asp源码

    2009-08-28 12:51:00
  • Python实现企业微信机器人每天定时发消息实例

    2023-09-04 22:08:40
  • 基于python及pytorch中乘法的使用详解

    2022-08-07 09:26:59
  • ACCESS 2007出现“错误 '80040e14'“

    2008-06-19 13:21:00
  • asp之家 网络编程 m.aspxhome.com