Python 解码和编码

Python decode and encode

我不知道如何通过特定代码页提供要解码(或编码?)的十进制代码点列表。

str_0 = 'abc'
lst_decimal = list(str_0.encode("utf-8"))
for i in lst_decimal:
    print (str(int(i)).decode("cp437"))

错误:'str'对象没有属性'decode'

str_0.encode("utf-8") returns一个bytes对象,它有一个decode方法,但是当你把它变成一个列表时,它就变成了一个int类型的列表。只需将其保留为字节对象:

my_bytes = str_0.encode("utf-8") 
print (my_bytes.decode("cp437")) #prints abc

更简单:

print(str_0.encode("utf-8").decode("cp437"))

作为一个额外的好处,不需要在循环中使用 decode -- 整个 bytes 对象可以一次解码。

如果您想保留原来的 lst_decimal 并做您想做的事情,您的循环可能如下所示:

for i in lst_decimal:
    print(bytes([i]).decode("cp437"))

list() 把一个 bytes 对象变成一个整数列表,然后 bytes 倒退。但是请注意,只是 bytes(i) returns 一个 i 字节的列表,每个字节都初始化为 0.