我正在尝试理解 python 中的编码内容,我想我几乎能够理解它了。所以这里是一些我将解释的代码,我希望你能验证我的想法:)
text = line.decode( encoding )
print "type(text) = %s" % type(text)
iso_8859_1 = text.encode('latin1')
print "type(iso_8859_1) = %s" % type(iso_8859_1)
unicodeStr = text.encode('utf-8')
print "type(unicodeStr) = %s" % type(unicodeStr)
所以第一行
text = line.decode( encoding )
确实将编码“encoding”中给出的给定字符串转换为 python 的 unicode 文本格式。因此输出是
type(text) = <type 'unicode'>
现在,我以 utf-8 编码风格使用文件中的原始文本,而对于代码的其余部分,“文本”是 utf-8 文本。
现在我想将(出于什么原因)utf-8 文本转换为其他内容,例如latin1 是通过“text.encode('latin1')”完成的。在这种情况下我的代码的输出是
type(iso_8859_1) = <type 'str'>
type(unicodeStr) = <type 'str'>
现在,我剩下的唯一问题是:为什么后两种情况的类型是“str”而不是“latin1”或“unicode”。这就是我仍然不清楚的地方。
后面的字符串“iso_8859_1”和“unicodeStr”是否分别以“latin1”或“unicode”编码?
最佳答案
首先,utf8 != unicode。
str 基本上是一个字节序列,编码是解释这些序列的方法,而 unicode 是,嗯 - unicode。
乔尔在这个主题上发表了很棒的文章http://www.joelonsoftware.com/articles/Unicode.html
关于Python:关于编码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718560/