首页 > 编程语言 >Python encode()方法和decode()方法

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

时间:2022-12-28 14:11:59浏览次数:54  
标签:编码 Python bytes decode strict str encode

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语言中文网'

   

标签:编码,Python,bytes,decode,strict,str,encode
From: https://www.cnblogs.com/beichengshiqiao/p/17010011.html

相关文章

  • python以主程序形式运行
    以主程序形式运行在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行,那么它......
  • 问题随记 —— Python3.8 fasttext 安装
    文章目录​​问题描述​​​​解决方法​​问题描述Python安装fasttext解决方法输入以下命令安装即可。pipinstallfasttext如果报错,需要事先安装C++11环境,否则将编译......
  • 大数据随记 —— 利用Python分析快手APP全国大学生用户数据(2022 年初赛第四题 )
    文章目录​​一、题目描述​​​​0、背景​​​​1、题目一​​​​2、题目二​​​​3、题目三​​​​二、题解​​​​1、题目一详解——学校学生使用频次最多的前3......
  • Python中itertools详解
    目录Python中itertools模块一、简介二、使用介绍1、常用迭代器1.1chain1.2groupby2、无穷迭代器2.1count2.2cycle2.3repeat3、排列组合迭代器3.1product3.2perm......
  • python 接入钉钉群机器人
    一、获取机器人信息。1)添加自定义机器人 2)保存机器人webhook信息  二:调用机器人接口1)curl命令转化程代码可以使用在线工具进行转化程其他语言的代码。cur......
  • python——random模块
    参考:https://www.cnblogs.com/liangmingshen/p/8909376.html 1.random.random() #用于生成一个0到1的随机浮点数:0<=n<1.01importrandom2a=random.rand......
  • python实验报告(第11章)
    实验11:使用Python操作数据库一、实验目的和要求1、学会数据库编程接口;2、学会使用SQLite;3、学会使用MySQL。二、实验环境软件版本:Python3.1064_bit三、实验过程......
  • python实验报告(第12章)
    实验12:GUI界面编程一、实验目的和要求1、学会应用常用控件;2、学会使用BoxSizer布局;3、学会事件处理。二、实验环境软件版本:Python3.1064_bit三、实验过程1、实......
  • python多线程
    1、获取线程ID(线程是操作系统中最小的调度单位)importthreadingt=threading.currentThread()#线程IDprint('Threadid:%d'%t.ident)#线程NAMEprint('Threadna......
  • 极客编程python入门-多重继承
    多重继承通过多重继承,一个子类就可以同时获得多个父类的所有功能。Python自带的很多库也使用了MixIn。举个例子,Python自带了​​TCPServer​​和​​UDPServer​​这两类网......