gpt4 book ai didi

python - 何时在 python 中使用 unicode(string) 和 string.encode ('utf-8' )

转载 作者:行者123 更新时间:2023-11-30 23:18:30 25 4
gpt4 key购买 nike

我在电子表格单元格数据中遇到了一些奇怪的字符,我尝试按照建议使用编码('utf-8')来解决它。它没有解决问题,但当我使用 unicode(string) 时它起作用了。我的问题是有一个标准的方法来处理所有类型的文本数据吗?

最佳答案

简单地说,“字符串”(python2 中的“unicode 字符串”,python3 中的“字符串”)是一个“字符”序列。但“字符”是一个抽象概念,无法将字符存储在文件系统中或通过网络发送它(听起来很奇怪,但实际上并不存在)。文件系统、网络、控制台和其他设备只理解“字节”。因此,当您与设备或外部程序交谈时,作为程序员,您的工作就是正确地将字符转换为字节,反之亦然。

字符到字节的转换在Python中被称为“encode()”。当您将字符串发送到设备时,您将字符“encode()”为字节:

some_chunk_of_bytes = some_string.encode(how_exactly)

有很多方法(称为“字符编码”)将字符表示为字节组合,因此您必须向编码器解释您希望如何完成它。

当您从某个地方读取数据时,您只能获得原始字节,并且必须将它们“decode()”为有意义的字符:

some_string = some_chunk_of_bytes.decode(how_exactly)

同样,您必须指定您认为如何对这些字节进行编码(无法确定)。

Python 中有许多快捷方式可以对您隐藏编码/解码内容。例如,

 string = unicode(bytes)

在幕后执行此操作:

 string = bytes.decode(default-encoding)

当你做像

这样简单的事情时
print string

实际上是:

sys.stdout.write(string.encode(default-encoding))

但即使您不显式使用编码/解码,您也必须意识到它仍然必须在某个时刻发生。如果您的程序中出现乱码,那总是因为您:

  • 忘记了“编码”步骤,或者
  • 忘记了“解码”步骤,或者
  • 提供了不正确的“编码”

如上所述,这个描述非常基础,如果您想了解所有细节,请阅读

关于python - 何时在 python 中使用 unicode(string) 和 string.encode ('utf-8' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com