4

文档中codecs.open()提到

即使未指定二进制模式,文件也始终以二进制模式打开。这样做是为了避免由于使用 8 位值进行编码而导致的数据丢失。

对文件使用文本模式如何导致“数据丢失”?听起来在文本模式下打开文件可能会将字节截断为 7 位,但我在文档中找不到任何提及:文本模式仅被描述为转换换行符的一种方式,没有提及一些潜在的数据失利。那么,文档是codecs.open()指什么?

PS:虽然可以理解将自动换行符转换为依赖于平台的换行符编码需要一些小心,但问题是关于 8 位编码的具体内容。我会猜到只有一些编码与自动换行符转换兼容,无论它们是 8 位还是 7 位编码。那么,为什么 8 位编码在codecs.open()的文档中被单独列出呢?

4

1 回答 1

5

我认为它们的意思是某些编码至少在某些字节中使用所有 8 位,因此所有 256 个值都是可能的(特别是,有可能获得不意味着 CR 或 LF 的 0x0A 或 0x0D)。

相反,在 UTF-8 文件中,CR 和 LF 字符(以及 0x80 以下的所有其他字符)总是转换为它们自己。它们不能作为其他字符编码的一部分出现。

于 2011-05-17T20:35:24.987 回答