在 python 中使用相同的编码格式对一个字符串进行多次编码有什么坏处吗? (即 UTF-8)?
我有一个函数,它使用另一个函数从文档中获取字符串,然后序列化该字符串。目前,第二个函数(从文档中获取字符串的函数)的唯一用户是第一个函数。
这在未来可能会改变,有人可能会决定在另一个序列化(或类似)函数中使用它,而不是先将其结果编码为 UTF-8。我想知道始终从中返回 UTF-8 编码的字符串是否安全(此时,该字符串也将由序列化函数重新编码())。我的测试表明这不是问题,但我想我会问。
谢谢!
请您参考如下方法:
你不能多次编码,这是行不通的。
>>> s = u"ä".encode('latin1')
>>> s = s.encode('latin1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
看,您得到“ascii 编解码器无法解码”。字符串上的 encode 方法所做的是首先将字符串解码 为 Unicode,然后使用给定的编码再次对其进行编码。它将使用系统编码对其进行解码,默认情况下为 ascii。
这种行为是出乎意料的,并且在 Python 3 中消失了,顺便说一句,其中字节没有编码方法,字符串没有解码方法。
所以您根本无法对其进行多次编码,当然这是因为对编码字符串进行编码根本没有任何意义。编码是从 Unicode 转换为二进制表示,您不能进一步编码二进制表示。
