Python3函数字节对相同的输入进行编码,并具有不同的响应

问题描述 投票:0回答:1

这怎么可能?我正在使用python3。

   a= b"\xfc\x48\x83\xe4\xf0\xe8"
   b= "\xfc\x48\x83\xe4\xf0\xe8"
   if (a == b.encode('ascii',errors='replace')):
         print ("Winner")

我尝试过其他类型的错误,但是什么也没有。如果我没有输入任何错误,则会弹出一个错误,提示“编解码器无法在位置0编码字符'\ xfc':序数不在range(128)中”。我已经阅读了the official manual 上的手册,但找不到任何好的答案。

python python-3.x encode
1个回答
0
投票

从您链接的文档中:

编码不必处理所有可能的Unicode字符,大多数编码都不需要。例如,Python的默认编码是“ ascii”编码。将Unicode字符串转换为ASCII编码的规则很简单。对于每个代码点:

如果代码点为<128,则每个字节与代码点的值相同。

如果代码点为128或更大,则无法使用此编码表示Unicode字符串。 (在这种情况下,Python引发UnicodeEncodeError异常。)

看起来像第一个代码点\xfc > 128,这意味着您无法用ascii编码表示它。

© www.soinside.com 2019 - 2024. All rights reserved.