从字节解码到任意

2024-10-01 07:44:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这是Python 2

我的理解是

任何

encode是关于编码unicode代码点到任何东西(bytes/ascii/utf-8/…)

根据下面的代码

>>> myUtf8
'Hi \xe2\x84\x99\xc6\xb4\xe2\x98\x82\xe2\x84\x8c\xc3\xb8\xe1\xbc\xa4'
>>> myUtf8.decode("ascii", "replace")
u'Hi \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd'
>>> myUtf8.decode('utf-16')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/encodings/utf_16.py", line 16, in decode
    return codecs.utf_16_decode(input, errors, True)
UnicodeDecodeError: 'utf16' codec can't decode byte 0xa4 in position 18: truncated data

问题

为什么代码点\ufffd被替换为无法解码的字节?在

编辑:

问题:

协议(例如)正在接收字节。如何查找,字节是用哪种编码表示的?假设这些字节是从网络接收的。在


Tags: 代码in编码字节lineasciihiutf
1条回答
网友
1楼 · 发布于 2024-10-01 07:44:01

你的理解是错误的。decode是“从作为第一个参数传递给unicode的编码中表示的字节”;encode是“从unicode到作为第一个参数传递的编码中表示的字节”。在

在您的示例中,您给出了一些用UTF-8表示的字节,并告诉Python将它们解释为ASCII,然后构建一个unicode字符串;如果所有的>;127个字节都不是有效的ASCII,它们被视为垃圾,因此,正如您使用"replace"参数请求的那样,它们将被Unicode替换字符替换。在

相关问题 更多 >