codecs.open()
的文档提及
即使未指定二进制模式,文件也始终以二进制模式打开。这样做是为了避免因使用8位值进行编码而导致数据丢失。
如何使用文本模式导致文件导致“数据丢失”?听起来像在文本模式下打开文件可能会将字节截断为7位,但我在文档中找不到任何提及:文本模式described仅作为转换换行符的一种方式,没有提及一些潜在的数据丢失。那么,codecs.open()
的文档引用了什么?
PS :虽然可以理解的是,依赖于平台的换行编码的自动换行需要一些小心,但问题是关于8位编码的具体内容。我猜想只有某些编码与自动换行转换兼容,无论它们是8位编码还是7位编码。那么,为什么在codecs.open()
的文档中挑出了8位编码?
答案 0 :(得分:5)
我认为他们的意思是某些编码在至少一些字节中使用所有8位,因此所有256个值都是可能的(特别是,可能得到0x0A或0x0D并不意味着CR或LF)
相反,在UTF-8文件中,CR和LF字符(以及0x80以下的所有其他字符)总是转换为自身。它们不能作为其他角色编码的一部分出现。