通过强制转换为可逆的转换Python unicode?

时间:2015-02-20 13:43:53

标签: python string unicode

在Python中将unicode字符串u转换为(字节)字符串的正确方法是调用u.encode(someencoding)

不幸的是,我之前并不知道,我曾使用str(u)进行转换。特别是,我调用str(u)强制u为字符串,这样我就可以使它成为有效的搁置键(必须是str)。

由于我没有遇到任何UnicodeEncodeError,我想知道这个过程是否可逆/无损。也就是说,我可以u = str(converted_unicode)(或Python 3中的u = bytes(converted_unicode))获取原始u吗?

1 个答案:

答案 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中使用显式编解码器在strbytes之间进行转换。