2024-09-29 23:32:26 发布
网友
有人能解释一下为什么我可以通过把bytes对象转换成str
bytes
str
>>> bytes_ = b';\xf7\xb8W\xef\x0f\xf4V' >>> list(bytes_) [59, 247, 184, 87, 239, 15, 244, 86] >>> "".join([chr(x) for x in bytes_]) ';÷¸Wï\x0fôV'
但如果我打电话
我得到一个错误。在
.decode()使用的默认编码是UTF-8。但是,bytes_中至少有一些字节没有正确编码UTF-8字符。另一方面,chr(n)按序号而不是编码返回第n个Unicode字符。如果希望.decode()正常工作,则必须告诉它要使用哪种编码。例如,utf-16似乎有效:
.decode()
bytes_
chr(n)
utf-16
bytes_.decode('utf-16') #'\uf73b垸\u0fef围'
CP1252也起作用,但(预期)会产生不同的结果:
CP1252
.decode()
使用的默认编码是UTF-8。但是,bytes_
中至少有一些字节没有正确编码UTF-8字符。另一方面,chr(n)
按序号而不是编码返回第n个Unicode字符。如果希望.decode()
正常工作,则必须告诉它要使用哪种编码。例如,utf-16
似乎有效:
^{pr2}$CP1252
也起作用,但(预期)会产生不同的结果:相关问题 更多 >
编程相关推荐