为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 python 3 中解码字节数组,但在 python 2 中可能

无法在 python 3 中解码字节数组,但在 python 2 中可能

繁花不似锦 2022-05-24 17:17:46
我正在尝试bytearray在 Python 3 中将 a 打印为一串 ascii 字符。我有一个bytearray我尝试使用 Python 2 和 Python 3 打印的。在 Python 2 中,bytearray它以正确的 ascii 字符打印到控制台。但是,当我在 Python 3 中尝试它时,我收到如下错误:Python2:print(bytearray(b"\x0e6G\xe8Y-5QJ\x08\x12CX%6\xed=\xe6s@Y\x00\x1e?S\\\xe6\'\x102"))# 6G?Y-5QCX%6?=?s@Y?S\?'2Python3:print(bytearray(b"\x0e6G\xe8Y-5QJ\x08\x12CX%6\xed=\xe6s@Y\x00\x1e?S\\\xe6\'\x102").decode("ascii"))Traceback (most recent call last):  File "<stdin>", line 1, in <module>UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 3: ordinal not in range(128)如何在 Python 3 中实现与 Python 2 中相同的行为?print在 Python 2 中,除了简单地将字节数组解码为 ascii 之外,还做其他事情吗?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

ascii是 7 位。使用iso-8859-158 位等。您选择哪一种 8 位编解码器将取决于您首选的高位字符映射。


>>> print(bytearray(b"\x0e6G\xe8Y-5QJ\x08\x12CX%6\xed=\xe6s@Y\x00\x1e?S\\\xe6\'\x102").decode("iso-8859-15"))

6GèY-5QCX%6í=æs@Y?S\æ'2

>>> print(bytearray(b"\x0e6G\xe8Y-5QJ\x08\x12CX%6\xed=\xe6s@Y\x00\x1e?S\\\xe6\'\x102").decode("iso-8859-15").encode("iso-8859-15") == bytearray(b"\x0e6G\xe8Y-5QJ\x08\x12CX%6\xed=\xe6s@Y\x00\x1e?S\\\xe6\'\x102"))

True


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信