Python:编码后立即解码

时间:2014-07-15 13:17:22

标签: python unicode

在遗产中找到:

somevar.encode('utf-8').decode('utf-8')

试图捕获编码错误时,我们能否发现这种结构很有用?

1 个答案:

答案 0 :(得分:2)

Python 2.7.6解释器中的实验:

a = u"string"
a

输出:u' string'

b = a.encode('utf-8').decode('utf-8')
b

输出:u' string'

b = a.decode('utf-8').encode('utf-8')
b

输出:'字符串'

a = "string"
a  

输出:'字符串'

b = a.encode('utf-8').decode('utf-8')
b

输出:u' string'

b = a.decode('utf-8').encode('utf-8')
b

输出:'字符串'

请注意,无论原始字符串是否为Unicode,编码的输出 - > decode将是一个Unicode字符串。解码的输出 - > encode不是unicode字符串。但是,一个简单的注意事项是,由于字符串是不可变的,所以除了检查Unicode错误之外,发布它的代码行也没用,因为它没有捕获函数调用的返回值。

编码的唯一真正效果 - > decode构造是通过它传递的所有字符串(并从返回中捕获)将是Unicode字符串。为什么你要这样做而不是unicode_string = unicode(normal_string, encoding='UTF-8')我不知道。