Я хотел бы знать разницу (с примерами, если это возможно) между типами разрывов строк CR LF (Windows), LF (Unix) и CR (Macintosh).
line-breaks
eozzy
источник
источник
\n
обычно представлен переводом строки, но это не обязательно перевод строки.\r
а также\n
являются абстракциями, используемыми в определенных языках программирования. Закрытие этого вопроса затмевает фундаментальные различия между вопросами и увековечивает дезинформацию.\n
не означает то же самое во всех языках программирования.Ответы:
Это действительно о том, какие байты хранятся в файле.
CR
это байт-код для возврата каретки (со времен пишущих машинок) иLF
аналогично для перевода строки. Это просто относится к байтам, которые размещены как маркеры конца строки.Путь больше информации, как всегда, в Википедии .
источник
CR
является маскирующим\r
иLF
является маскирующим\n
. Кроме того, Википедия: Newline .CR and LF
это просто конец строки и новая строка по этой ссылке , это правильно?CR и LF - управляющие символы, соответственно закодированные
0x0D
(13 десятичных знаков) и0x0A
(10 десятичных знаков).Они используются, чтобы отметить разрыв строки в текстовом файле. Как вы указали, Windows использует два символа последовательности CR LF; Unix использует только LF, а старый MacOS (до Mac OS Mac OS X) использовал CR.
Апокрифическая историческая перспектива:
Как указывает Питер , CR = возврат каретки и LF = перевод строки , два выражения имеют свои корни в старых пишущих машинках / TTY. LF переместил бумагу вверх (но оставил горизонтальное положение идентичным), а CR вернул «каретку» так, чтобы следующий набранный символ находился в крайнем левом положении на бумаге (но на той же строке). CR + LF занимался тем и другим, то есть готовился набрать новую строку. По прошествии времени физическая семантика кодов оказалась неприменимой, а память и пространство на гибких дисках были очень важны, некоторые разработчики ОС решили использовать только один из символов, они просто не очень хорошо общались друг с другом; -)
Большинство современных текстовых редакторов и текстовых приложений предлагают опции / настройки и т. Д., Которые позволяют автоматически определять соглашение о конце строки в файле и отображать его соответствующим образом.
источник
CR and LF
это просто конец строки и новая строка по этой ссылке , это правильно?CR+LF
) могут отображаться с двойными символами новой строки в других системах. Предположительно редактор, отображающий текст, поддерживает как возврат каретки, так и перевод строки в качестве разделителей новой строки, и, как таковой, может создать 2 строки, где предполагалось 1. Так что покаCR+LF
может быть наиболее совместимым, я не думаю, что это без проблем.Это хорошее резюме, которое я нашел:
Символ возврата каретки (CR) (
0x0D
,\r
) перемещает курсор в начало строки без перехода на следующую строку. Этот символ используется как символ новой строки в операционных системах Commodore и Early Macintosh (OS-9 и более ранних).Символ перевода строки (LF) (
0x0A
,\n
) перемещает курсор вниз к следующей строке, не возвращаясь к началу строки. Этот символ используется как символ новой строки в системах на основе UNIX (Linux, Mac OSX и т. Д.)Последовательность конца строки (EOL) (
0x0D 0x0A
,\r\n
) на самом деле представляет собой два символа ASCII, комбинацию символов CR и LF. Он перемещает курсор вниз на следующую строку и в начало этой строки. Этот символ используется как символ новой строки в большинстве других не-Unix операционных систем, включая Microsoft Windows, Symbian OS и другие.Источник
источник
Поскольку ответа на этот вопрос нет, кратко резюмируем:
Возврат каретки (MAC pre-OSX)
Перевод строки (Linux, MAC OSX)
Возврат каретки и перевод строки (Windows)
Если вы видите ASCII-код в странном формате, это просто числа 13 и 10 с другим основанием / основанием, обычно основание 8 (восьмеричное) или основание 16 (шестнадцатеричное).
http://www.bluesock.org/~willg/dev/ascii.html
источник
У Джеффа Этвуда есть недавняя запись в блоге об этом: Великий Раскол Newline
Вот суть из Википедии :
источник
<CR><CR><LF>
- поэтому, конечно, я экспериментировал только с одним<CR>
. Я послал<CR><LF>A
после длинной линии, и вы могли слышатьA
печатаются до каретки полностью возвращается.<CR><CR>
и набирая правильное количество пробелов, затем перепечатывая одно и то же слово: примитивную форму полужирного шрифта.CR - код ASCII 13
LF - ASCII код 10.
Теоретически CR возвращает курсор в первую позицию (слева). LF подает одну строку, перемещая курсор на одну строку вниз. Вот как в старые времена вы управляли принтерами и мониторами в текстовом режиме. Эти символы обычно используются для обозначения конца строк в текстовых файлах. Различные операционные системы использовали разные соглашения. Как вы указали, в Windows используется комбинация CR / LF, в то время как в пред-OSX Mac используется только CR и так далее.
источник
Вот подробности .
источник
Печальное состояние «разделителей записей» или «разделителей строк» является наследием мрачных эпох компьютеров.
Теперь мы считаем само собой разумеющимся, что все, что мы хотим представить, является в некотором роде структурированными данными и соответствует различным абстракциям, которые определяют строки, файлы, протоколы, сообщения, разметку, что угодно.
Но однажды это было не совсем так. В приложения встроены управляющие символы и обработка для конкретного устройства. Системы с мертвым мозгом, которые требовали как CR, так и LF, просто не имели абстракции для разделителей записей или ограничителей строки. CR был необходим для того, чтобы телетайп или видеодисплей вернулись в первый столбец, а LF (сегодня, NL, тот же код) был необходим, чтобы заставить его перейти к следующей строке. Я предполагаю, что идея сделать что-то кроме сброса необработанных данных на устройство была слишком сложной.
Unix и Mac фактически указали абстракцию для конца строки, представьте это. К сожалению, они указали разные. (Unix, гм, пришел первым.) И, естественно, они использовали управляющий код, который уже был «близок» к SOP
Поскольку почти все наше операционное программное обеспечение сегодня является потомком операционной системы Unix, Mac или MS, мы застряли в неразберихе с окончанием строки.
источник
NL, полученная из EBCDIC NL = x'15 ', которая логически сравнивалась бы с CRLF x'odoa ascii ... это становится очевидным при физическом перемещении данных с мэйнфреймов в средний диапазон. В разговорной речи (поскольку только тайные люди используют ebcdic) NL был приравнен либо к CR, либо к LF, либо к CRLF.
источник