在Python中将unicode字符串u
转换为(字节)字符串的正确方法是调用u.encode(someencoding)
。
不幸的是,我之前并不知道,我曾使用str(u)
进行转换。特别是,我调用str(u)
强制u
为字符串,这样我就可以使它成为有效的搁置键(必须是str)。
由于我没有遇到任何UnicodeEncodeError
,我想知道这个过程是否可逆/无损。也就是说,我可以u = str(converted_unicode)
(或Python 3中的u = bytes(converted_unicode)
)获取原始u
吗?
答案 0 :(得分:5)
在Python 2中,如果str()
的转换成功,那么您可以撤消结果。在str()
值上使用unicode
相当于使用unicode_value.encode('ascii')
,反之则只是使用str_value.decode('ascii')
。使用unicode(str_value)
将使用相同的隐式ASCII编解码器进行解码。
在Python 3中,在unicode值上调用str()
只会返回相同的对象,因为在Python 3中str()
是的Unicode类型。在没有编码的情况下对Unicode值使用bytes()
失败,您总是必须在Python 3中使用显式编解码器在str
和bytes
之间进行转换。