Python中的UTF-8编码与解码

在Python中,字符串是以Unicode形式存储的,当我们需要将字符串与其他系统(如文件、网络等)进行交互时,我们需要将其转换为字节串,这时,就需要使用到UTF-8编码,同样,当我们从其他系统接收到字节串时,也需要将其解码为字符串,UTF-8是一种非常常见的字符编码方式,它可以表示任何Unicode字符。

pythonutf pythonutf8编码中文

在Python中,我们可以使用内置的encode()decode()方法来进行UTF-8编码和解码。

我们来看看如何使用encode()方法进行UTF-8编码,这个方法接受一个参数,即要使用的字符编码方式,如果不提供这个参数,那么默认使用的是ASCII编码,如果我们想要使用UTF-8编码,就可以将"utf-8"作为参数传递给encode()方法。

s = "你好,世界!"
b = s.encode("utf-8")
print(b)

运行上述代码,我们可以得到如下输出:

b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'

这就是我们的字符串"你好,世界!"被UTF-8编码后的结果,每个字符都被替换为了对应的字节序列。

接下来,我们来看看如何使用decode()方法进行UTF-8解码,这个方法也接受一个参数,即要使用的字符编码方式,如果不提供这个参数,那么默认使用的是ASCII编码,如果我们想要使用UTF-8解码,就可以将"utf-8"作为参数传递给decode()方法。

b = b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
s = b.decode("utf-8")
print(s)

运行上述代码,我们可以得到如下输出:

'你好,世界!'

这就是我们的字节串被UTF-8解码后的结果,每个字节都被替换为了对应的字符。

需要注意的是,如果字节串中包含了无法用UTF-8解码的字节,那么decode()方法会抛出一个UnicodeDecodeError异常,在使用decode()方法时,我们需要确保字节串是有效的UTF-8编码。