在 Python 中,decode() 和 encode() 方法是用于字符串编码和解码的方法。
encode() 方法将字符串编码为指定的编码格式,返回一个 bytes 对象。常用的编码格式包括 UTF-8、ASCII 码等。例如:
str = "Hello, world!"
b = str.encode('utf-8') # 将字符串编码为 utf-8 格式的 bytes 对象
print(b) # 输出 b'Hello, world!'
在上面的例子中,str.encode('utf-8') 将字符串 str 编码为 utf-8 格式的 bytes 对象,并将结果赋值给变量 b。print(b) 语句输出结果为 b'Hello, world!',其中 b 表示 bytes 类型。
decode() 方法将 bytes 对象解码为字符串,使用指定的编码格式。例如:
b = b'Hello, world!'
str = b.decode('utf-8') # 将 bytes 对象解码为 utf-8 编码的字符串
print(str) # 输出 Hello, world!
在上面的例子中,b.decode('utf-8') 将 bytes 对象 b 解码为 utf-8 编码的字符串,并将结果赋值给变量 str。print(str) 语句输出结果为 Hello, world!,其中 str 表示字符串类型。
因此,encode() 方法用于将字符串编码为 bytes 对象,decode() 方法用于将 bytes 对象解码为字符串。它们的作用是相反的。
—————————————————了解几个基本概念—————————————————
*字节:计算机数据的表示。8位二进制。可以表示无符号整数:0-255。下文,用“字节流”表示“字节”组成的串。
*字符:英文字符“abc”,或者中文字符“你我他”。字符本身不知道如何在计算机中保存。下文中,会避免使用“字符串”这个词,而用“文本”来表
示“字符”组成的串。
*编码(动词):按照某种规则(这个规则称为:编码(名词))将“文本”转换为“字节流”。(在python中:unicode变成str)
*解码(动词):将“字节流”按照某种规则转换成“文本”。(在python中:str变成unicode)
**实际上,任何东西在计算机中表示,都需要编码。例如,视频要编码然后保存在文件中,播放的时候需要解码才能观看。
unicode:unicode定义了,一个“字符”和一个“数字”的对应,但是并没有规定这个“数字”在计算机中怎么保存。(就像在C中,一个整数既可以是int,也可以是short。unicode没有规定用int还是用short来表示一个“字符”)
utf8:unicode实现。它使用unicode定义的“字符”“数字”映射,进而规定了,如何在计算机中保存这个数字。其它的utf16等都是unicode实现。
gbk:类似utf8这样的“编码”。但是它没有使用unicode定义的“字符”“数字”映射,而是使用了另一套的映射方法。而且,它还定义了如何在计算机中保存。
—————————————python中的encode,decode方法—————————————
首先,要知道encode是 unicode转换成str。decode是str转换成unicode。
下文中,u代表unicode类型的变量,s代表str类型的变量。
u.encode('...')基本上总是能成功的,只要你填写了正确的编码。就像任何文件都可以压缩成zip文件。
s.decode('...')经常是会出错的,因为str是什么“编码”取决于上下文,当你解码的时候需要确保s是用什么编码的。就像,打开zip文件的时候,你要确保它确实是zip文件,而不仅仅是伪造了扩展名的zip文件。
u.decode(),s.encode()不建议使用,s.encode相当于s.decode().encode()首先用默认编码(一般是
ascii)转换成unicode在进行encode。
在Python中,encode()用于将字符串转化为指定编码格式的bytes对象,如UTF-8,而decode()则用于将bytes对象按特定编码解码回字符串。这两个方法在处理文本和字节流之间的转换时起到关键作用。需要注意的是,错误的解码可能导致异常,因为字符串的编码通常依赖于上下文。
293

被折叠的 条评论
为什么被折叠?



