В чем разница между \n и \r\n?

Они оба означают "новую линию", но когда один используется поверх другого?

8 ответов

Решение

\r\n это стиль Windows

\n такое стиль POSIX

\r старый Mac OS Style до OS X, современный Mac использует POSIX Style.


\r возврат каретки и \n это перевод строки, на старых компьютерах, где нет монитора, есть только принтер для вывода результатов программы пользователю, если вы хотите получать печать с начала новой строки слева, вы должны получить \n для перевода строки и \r для возврата каретки в крайнее левое положение используется синтаксис старых компьютеров, сохраненный к этому времени на платформе Windows.

\n означает новую строку. Это означает, что курсор должен перейти на следующую строку.

\ r означает возврат каретки. Это означает, что курсор должен вернуться к началу строки.

Unix и Unix программы обычно нуждаются только в новой строке (\n).

Программы для Windows и Windows обычно нуждаются в обоих.

\n - только новая строка, \r\n - новая строка и возврат каретки (т. е. переместите курсор влево).

Различные операционные системы обрабатывают переводы строк по-разному. Вот краткий список наиболее распространенных: DOS и Windows

Они ожидают, что символ новой строки будет комбинацией двух символов, а именно '\r\n' (или 13, за которыми следует 10).

Unix (и, следовательно, Linux)

Unix использует один \ n для обозначения новой строки.

макинтош

Маки используют один '\r'.

так что это вызывает проблемы, когда вы переносите ваше приложение с Windows на Mac, когда вы используете путь к папке и так далее.

'\n' является значением по умолчанию в Unix, '\r\n' является значением по умолчанию в Windows.

Так выглядит новая строка в операционных системах Windows (\r\n) и linux (\n)

В Unix \ r - это возврат каретки (CR) и \ na перевод строки (LF), которые вместе являются идентификатором новой строки be в Windows, и вы заменяете их идентификатором новой строки Unix.

В Windows \ r также является CR, но \ n является комбинацией CR и LF. Таким образом, вы пытаетесь заменить CR+CR+LF на CR+LF. Не имеет особого смысла, делает это.

Из "perldoc perlop": все системы используют виртуальный "" \ n "" для представления разделителя строк, называемого "новой строкой". Нет такой вещи как неизменный, физический символ новой строки. Это всего лишь иллюзия, что операционная система, драйверы устройств, библиотеки C и Perl - все это для сохранения. Не все системы читают "" \ r "" как ASCII CR и "" \ n "" как ASCII LF. Например, на Mac они поменялись местами, а в системах без ограничителя строки печать "\ n" может не выдавать фактических данных. В общем, используйте "" \ n "", когда вы подразумеваете "новую строку" для вашей системы, но используйте буквальный ASCII, когда вам нужен точный символ. Например, большинство сетевых протоколов ожидают и предпочитают CR+LF (""\015\012"" или ""\cM\cJ"") для ограничителей строки, и хотя они часто принимают только ""\012"", они редко терпеть просто ""\015"". Если вы привыкли использовать "" \ n "" для работы в сети, вы можете быть сожжены когда-нибудь.

Разница между разными операционными системами, в Windows символ новой строки \r\n в то время как в Linux это просто \n Mac OSX имеет только \r это действительно только вопрос того, что дизайнеры ОС сделали это, чтобы быть

В C# вы можете просто использовать Environment.NewLine

Другие вопросы по тегам