gpt4 book ai didi

python - 为什么 python cryptodome 使用 latin-1 来编码和解码字符串?

转载 作者:行者123 更新时间:2023-12-01 08:54:49 24 4
gpt4 key购买 nike

当我查看Cryptodome的代码时,我发现使用latin-1编码并带有utf-8注释会导致一些我们不想要的副作用。

例如,Cryptodome中的py3compat.py按照以下编码对字符串进行编码和解码。

def tobytes(s):
if isinstance(s,bytes):
return s
else:
if isinstance(s,str):
return s.encode("latin-1")
else:
return bytes([s])
def tostr(bs):
return bs.decode("latin-1")

最佳答案

原因或许很简单。 Python 将字符串作为字节来处理。默认情况下,Python 2 应仅使用 ASCII 源代码,但很可能存在 Latin-1 编码。字节的文字表示取决于源文件的编码。

因此,您需要使用 Latin-1 尽可能与旧应用程序生成的字节表示兼容。当然,现在一般最好默认为UTF-8。我强烈建议将字符显式编码为 UTF-8,而不是依赖任何默认值。

事实上,它出现在名为 py3compat.py 的文件中并不是巧合。

关于python - 为什么 python cryptodome 使用 latin-1 来编码和解码字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com