1 python unicode encoding utf-8
在python中使用相同的编码格式多次编码字符串有什么危害吗?(即UTF-8)?
我有一个函数,它使用另一个函数从文档中获取字符串,然后序列化字符串.目前,第二个函数的唯一用户(从文档中获取字符串的用户)是第一个函数.
这可能在将来发生变化,有人可能决定在另一个序列化(或类似)函数中使用它,而不首先将其结果编码为UTF-8.我想知道总是从它返回一个UTF-8编码的字符串是否安全(此字符串也将通过序列化函数重新执行.encode()).我的测试表明这不是问题,但是,我想我会问.
谢谢!
你不能多次编码,它不起作用.
>>> 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)
Run Code Online (Sandbox Code Playgroud)
看,你得到"ascii编解码器无法解码".字符串上的编码方法的作用是首先将字符串解码为Unicode,然后使用给定的编码再次对其进行编码.它将使用系统编码对其进行解码,默认情况下为ascii.
这种行为是出乎意料的,并且在Python 3,btw中消失了,其中字节没有编码方法,字符串没有解码方法.
所以你根本无法对它进行多次编码,当然这是因为编码一个编码的字符串根本没有任何意义.编码是从Unicode转换为二进制表示,您无法进一步编码二进制表示.
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |