В Windows возврат каретки - \r\n
, в то время как в Unix это \n
, \r\n
обрабатывается ли \r\n
как два символа?
Состоит ли возврат каретки Windows \ r \ n из двух или одного символа?
Ответы (6)
Это два персонажа:
\r
- возврат каретки;\n
- перевод строки.
Сочетание двух символов представляет новую строку в Windows. В то время как в Linux \n
представляет новую строку. Он перемещает курсор в начало новой строки в Linux. В Windows курсор останется в том же столбце консоли, но на следующей строке.
\r
в Linux имеет тот же эффект, что и в Windows: перемещает курсор в начало строки. Можно напечатать различную информацию в одной строке, где используется \r
вместо \n
.
На самом деле \r is 0x0D (^M) and \n is 0x0A (^J)
, но ..... в windows:
\n will write 0x0D 0x0A
в unix:
\r will write 0x0D
\n will write 0x0A
stdout
как двоичный поток, а не как текстовый поток, \n
будет записывать только 0x0A
, а не 0x0D 0x0A
в Windows. См. Ответ @FredFoo.
- person loxaxs; 03.05.2017
Зависит от настройки. \r\n
имеет ширину два байта (в ASCII, UTF-8 и т. Д.), Но библиотеки ввода-вывода, такие как stdio
библиотека C и другие, при работе в текстовом режиме могут переводить между \n
и \r\n
квазипрозрачно.
То есть на платформе Windows программа C, читающая поток в текстовом режиме txt_in
с
while ((c = getc(txt_in)) != EOF)
printf("%02x\n", c);
не будет сообщать код ASCII для \r
. И наоборот, putc('\n', txt_out)
фактически записывает \r\n
в поток текстового режима txt_out
.
Windows не различает \r\n
и любые другие два символа. Однако есть одна ситуация, когда он обрабатывается как один символ: если вы используете среду выполнения C и открываете файл как текст, \r\n
в файле будет прочитан как \n
, а \n
будет записан в файл как \r\n
.
Да, это два символа: возврат каретки '\ r', за которым следует перевод строки '\ n'.
Я провел несколько тестов (ничего особенного) с Notepad ++ и Sublime Text 2 в Windows, и оказалось, что \r
и \n
действительно являются двумя разными символами, но ...
Различные текстовые редакторы могут вставлять или не вставлять \r
при нажатии клавиши Return.
Попробуйте в текстовом редакторе сделать следующее:
1
2
3
4
5
Затем нажмите Ctrl + F, включите регулярные выражения и выполните поиск \r
. В зависимости от вашего текстового редактора и его настроек вы можете «нажимать» или «не нажимать» символ в конце каждой строки. Если приведенный выше текст скопирован из другого редактора, поведение также может отличаться ...
Некоторые текстовые редакторы позволяют изменять настройки в своих настройках, где вы можете указать, предпочитаете ли вы вставлять \r\n
или \n
в стиле unix, когда вы нажимаете Return. Вдобавок к этому они могут позволить вам выбрать принудительное единый стиль, удалив или вставив символ \r
перед сохранением файла.