Открытие файла в текстовом режиме может привести к потере данных в Python: почему?

В документации для codecs.open() упоминается, что

Файлы всегда открываются в двоичном режиме, даже если не указан бинарный режим. Это делается для предотвращения потери данных из-за кодирования с использованием 8-битных значений.

Как использование текстового режима для файла приведет к "потере данных"? Похоже, что открытие файла в текстовом режиме может обрезать байты до 7 бит, но я не могу найти упоминания об этом в документации: текстовый режим описан только как способ преобразования новых строк, без упоминания о какой-либо потенциальной потере данных. Итак, что относится к документации для codecs.open()?

PS. Хотя понятно, что автоматическое преобразование новой строки в зависимую от платформы кодировку новой строки требует некоторой осторожности, вопрос в том, что конкретно касается 8-битных кодировок. Я бы предположил, что только некоторые кодировки совместимы с автоматическим преобразованием новой строки, независимо от того, являются ли они 8- или 7-битными кодировками. Итак, почему выделены 8-битные кодировки, в документации codecs.open()?

4
задан 17 мая '11 в 23:25
источник поделиться
1 ответ

Я думаю, что они означают, что некоторые кодировки используют все 8 бит, по крайней мере, в некоторых байтах, так что все 256 значений возможны (и, в частности, возможно получить 0x0A или 0x0D, которые не означают CR или LF).

В отличие от этого, в файле UTF-8 символы CR и LF (и все остальные символы ниже 0x80) всегда переводят на себя. Они не могут быть частью кодирования какого-либо другого персонажа.

5
ответ дан 17 мая '11 в 23:35
источник

Другие вопросы по меткам или Задайте вопрос