В чем разница между \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
это действительно только вопрос того, что дизайнеры ОС сделали это, чтобы быть