Я хотел бы узнать разницу (с примерами, если это возможно) между типами прерываний CR LF (Windows), LF (Unix) и CR (Macintosh).
Разница между типами прерываний CR LF, LF и CR?
Ответ 1
Это действительно то, какие байты хранятся в файле. CR
- это байт-код для возврата каретки (со дня пишущих машинок) и LF
аналогично для строки. Это просто относится к байтам, которые помещаются как маркеры конца строки.
Настройте дополнительную информацию, как всегда, на wikipedia.
Ответ 2
CR и LF являются управляющими символами, соответственно закодированными 0x0D
(13 десятичных знаков) и 0x0A
(10 десятичных).
Они используются для обозначения разрыва строки в текстовом файле. Как вы указали, Windows использует два символа CR LF sequence; Unix использует только LF, а старый MacOS (pre-OSX MacIntosh) использует CR.
Апокрифическая историческая перспектива:
Как указано Петром, CR = Возврат каретки и LF = Линейный канал, два выражения имеют свои корни в старых пишущих машинах /TTY. LF переместил бумагу вверх (но сохранил горизонтальное положение идентично), и CR вернула "каретку", чтобы следующий символ был в крайнем левом положении на бумаге (но на той же линии). CR + LF делал то и другое, то есть готовился к вводу новой строки. С течением времени физическая семантика кодов была неприменима, и, поскольку память и пространство на дискете были на высоте, некоторые разработчики ОС решили использовать только один из символов, они просто не очень хорошо говорили друг с другом; -)
Большинство современных текстовых редакторов и текстовых приложений предлагают параметры/настройки и т.д., Которые позволяют автоматически определять соглашение о конце файла и отображать его соответствующим образом.
Ответ 3
Это хорошее резюме, которое я нашел:
Символ возврата каретки (CR) (0x0D
, \r
) перемещает курсор в начало строки, не переходя к следующей строке. Этот символ используется в качестве нового символа линии в операционных системах Commodore и Early Macintosh (OS-9 и ранее).
Символ Line Feed (LF) (0x0A
, \n
) перемещает курсор до следующей строки, не возвращаясь к началу строки. Этот символ используется как новый символ линии в системах на базе UNIX (Linux, Mac OSX и т.д.),
Последовательность конца строки (EOL) (0x0D 0x0A
, \r\n
) на самом деле является двумя символами ASCII, комбинацией символов CR и LF. Он перемещает курсор как до следующей строки, так и в начало этой строки. Этот символ используется в качестве нового символа линии в большинстве других не-Unix-операционных систем, включая Microsoft Windows, Symbian OS и другие.
Ответ 4
Поскольку нет ответа, в котором говорится именно об этом, кратко излагаются:
Возврат каретки (MAC pre-OSX)
- CR
- \р
- ASCII-код 13
Линейный канал (Linux, MAC OSX)
- LF
- \п
- ASCII-код 10
Возврат каретки и подача строки (Windows)
- CRLF
- \Г\п
- ASCII-код 13, а затем код ASCII 10
Если вы видите код ASCII в странном формате, это всего лишь число 13 и 10 в другом основании/основание, обычно базовое 8 (восьмеричное) или основание 16 (шестнадцатеричное).
Ответ 5
В Jeff Atwood есть последнее сообщение в блоге об этом: The Great Newline Schism
Вот сущность Wikipedia:
Частота последовательности CR + LF на многих ранних компьютерных системах, которые приняли телетайпные машины, обычно ASR33, как консоль устройства, поскольку эта последовательность была для размещения этих принтеров на начало новой строки. На этих систем, текст часто выполнялся обычно составленные для совместимости с этими принтеров, поскольку концепция устройства драйверы, скрывающие такие детали оборудования из приложения еще не было разработаны; приложениям приходилось говорить непосредственно на телетайпную машину и следовать его соглашениям. Разделение двух функций скрывали факт, что печатающая головка не могла вернуться с дальнего права на начало следующей строки в односимвольное время. Вот почему последовательность всегда отправлялась с CR первый. На самом деле это часто было необходимо для отправки дополнительных символов (посторонних CRs или NUL, которые игнорируются), чтобы задайте время печати, чтобы перейти к левое поле. Даже после телетайпов были заменены компьютерными терминалами с более высокими скоростями передачи, многие операционные системы по-прежнему поддерживаются автоматически отправка этих символов заполнения для совместимость с более дешевыми терминалами что потребовалось несколько символов для прокрутки дисплея.
Ответ 6
CR - код ASCII 13
LF - код ASCII 10.
Теоретически CR возвращает курсор в первую позицию (слева). LF подает одну строку, перемещая курсор на одну строку вниз. Таким образом, в старые времена вы контролировали принтеры и мониторы с текстовым режимом. Эти символы обычно используются для обозначения конца строк в текстовых файлах. Различные операционные системы использовали разные соглашения. Как вы указали, Windows использует комбинацию CR/LF, в то время как Mac OS до OSX использует только CR и т.д.
Ответ 7
Системы на основе ASCII или совместимый набор символов использует либо LF (Подача линии, 0x0A, 10 в десятичной форме) или CR (возврат каретки, 0x0D, 13 в десятичной форме) индивидуально или CR, за которым следует LF (CR + LF, 0x0D 0x0A); Эти символы основаны на командах принтера: строка указали, что одна строка бумага должна подаваться из принтера, а возврат каретки указали, что принтер каретка должна вернуться к началу текущей строки.
Вот подробности.
Ответ 8
Печальное состояние "разделителей записи" или "ограничителей строк" является наследием темных возрастов вычислений.
Теперь мы считаем само собой разумеющимся, что все, что мы хотим представить, является каким-то образом структурированными данными и соответствует различным абстракциям, которые определяют строки, файлы, протоколы, сообщения, разметку и т.д.
Но когда-то это было не совсем так. Применяется встроенные управляющие символы и обработка конкретных устройств. Системы с мертвым мозгом, которые требовали как CR, так и LF, просто не имели абстракции для разделителей записи или терминаторов линий. CR был необходим, чтобы вернуть телетекст или видеоизображение в колонку 1, и LF (сегодня, NL, тот же код) был необходим, чтобы заставить его перейти к следующей строке. Я предполагаю, что идея делать что-то помимо сброса необработанных данных на устройство была слишком сложной.
Unix и Mac фактически указали абстракцию для конца строки, представьте, что. К сожалению, они указали разные. (Unix, гм, пришел первым.) И, естественно, они использовали контрольный код, который уже был "близок" к S.O.P.
Так как почти все наше операционное программное обеспечение сегодня является потомком Unix, Mac или MS, использующим SW, мы застряли с путаницей, заканчивающейся.
Ответ 9
NL, полученное из EBCDIC NL = x'15 ', которое логически сравнивается с CRLF x'odoa ascii... это становится очевидным при физическом перемещении данных с мейнфреймов на средний уровень. Колониально (поскольку только тайные люди используют ebcdic) NL приравнивается либо к CR, либо к LF или CRLF