Python:关于编码的问题

标签 python mysql encoding

我正在尝试理解 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/

相关文章:

mysql奇怪的 "duplicate entry"错误

json - Go 嵌套 Json Marshall 或编码

python - 每个张量组的 Keras 自定义损失函数

python - 如果列表尚未包含所述字符串,则将字符串添加到嵌套的字符串列表

php - 使用自动完成功能输入文本 - 未捕获的 TypeError : $. ajax 不是 PHP、MySQL 和 jQuery 中的函数

javascript - jQuery 编码问题

javascript - 如何用 JavaScript 中的其他内容替换输入中的非 Ascii 字符

c++ - 如何在 C++ 中传递/捕获/响应 Python 的 KeyboardInterrupt?

python - 属性错误: image_converter instance has no attribute

mysql - 删除与某些通配符匹配的 MySQL 数据库?