【问题标题】:Python: Question about encodingPython:关于编码的问题
【发布时间】:2011-07-16 16:03:05
【问题描述】:

我正在尝试理解 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”编码?

【问题讨论】:

    标签: python mysql encoding


    【解决方案1】:

    首先,utf8 != unicode。
    str 基本上是一个字节序列,编码是解释这些序列的方法,而 unicode 是,嗯 - unicode。
    乔尔在这个主题上有很好的帖子http://www.joelonsoftware.com/articles/Unicode.html

    【讨论】:

    • 阅读链接的文章后,您应该知道足以弄清楚其余部分。开始接受和支持帮助你的人。
    • 感谢您的链接。我现在完全明白发生了什么!
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2018-08-30
    • 1970-01-01
    • 2020-09-29
    • 2018-10-04
    相关资源
    最近更新 更多