Подтвердить что ты не робот

Текстовый файл с разрывами 0D 0D 0A

Клиент отправляет мне CSV файл, где разрывы строк состоят из последовательности 0xD 0xD 0xA. Насколько мне известно, разрывы строк - это 0xA из Mac или Unix или 0xD 0xA из Windows.

Является ли 0xD 0xD 0xA какой-либо известной кодировкой? Есть ли какая-либо известная последовательность сбережений, которая искажает окончания строки файла, которая вызывает это (я думаю, что клиент использует Mac)?

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

4b9b3361

Ответ 1

CRCRLF известен как результат ошибки Windows XP notepad.

Для справки в будущем здесь выдержка релевантности из связанного блога:

Когда вы нажимаете клавишу Enter на компьютерах Windows, на самом деле сохраняются два символа: возврат каретки (CR) и линия (LF). Операционная система всегда интерпретирует последовательность символов CR LF так же, как клавиша Enter: она переходит к следующей строке. Однако, когда есть дополнительные символы CR или LF, это может иногда вызывать проблемы.

В версии Notepad для Windows XP есть ошибка, которая может привести к добавлению лишних символов CR в окне дисплея. Ошибка происходит в следующей ситуации:

Если у вас включен параметр "перенос слов", а окно отображения содержит длинные строки, которые обертываются, то сохранение файла заставляет Notepad вставлять символы CR CR LF в каждую точку переноса в окне отображения, но не в сохраненном файл.

Символы CR CR LF могут вызывать странности, если вы копируете и вставляете их в другие программы. Они также предотвращают неправильное перематывание строк в Notepad, если вы измените размер окна "Блокнот".

Вы можете удалить символы CR CR LF, отключив функцию обертывания слов, а затем, при желании, снова включите ее. Тем не менее, курсор перемещается в начале окна дисплея, когда вы это делаете.

Ответ 2

Закодированные файлы Netscape ANSI используют 0D 0D 0A для разрывов строк.

Ответ 3

Это обычно связано с ошибкой в ​​системе контроля версий или аналогичной. Это был продукт CVS, если файл был проверен с Windows на Unix-сервер, а затем снова выгружен...

Другими словами, он просто сломан...

Ответ 4

Сообщалось также, что почта Apple сделала ошибку кодирования для текста и вложений csv исходящими. По сути, он заменяет терминаторы строк мягкими разрывами строк на каждой строке, которые выглядят как = 0D в кодировке. Если приложение отправлено по электронной почте в Outlook, Outlook видит, что разрывы в мягких линиях удаляются, а затем добавляет реальные разрывы строк, то есть 0D0A, поэтому вы получаете 0D0D0A (cr cr lf) в конце каждой строки. Кодировка должна быть равна = 0D = если это файл формата Mac (или любой другой вкус unix) или = 0D0A = если это файл формата Windows.

Если вы отправляете сообщения электронной почты из почты Apple (по крайней мере, в mavericks или yosemite), что делает вложение не текстовым или CSV файлом, это приемлемое решение, например. сжать его.

Ошибка также существует, если вы запускаете виртуальную машину Windows под параллелью и отправляете по электронной почте текстовый файл с помощью apple mail. Это кодировка электронной почты. Форма предыдущих комментариев здесь, похоже, что у netscape была та же проблема.

Ответ 5

Просто говоря, это также значение (вид...), которое возвращается из php:

<?php var_dump(urlencode(PHP_EOL)); ?> 
    // Prints: string '%0D%0A' (length=6)-- used in 5.4.24 at least