Возврат каретки Windows \ r \ n состоит из двух или одного символа? - PullRequest
71 голосов
/ 10 августа 2011

Возврат каретки Windows равен \r\n, а в Unix \n, \r\n обрабатывается как два символа?

Ответы [ 6 ]

101 голосов
/ 10 августа 2011

Это два символа:

  • \r - возврат каретки;
  • \n - перевод строки.

Два символа вместе представляют новую строку в Windows. В то время как в Linux \n представляет новую строку. Перемещает курсор на начало новой строки в Linux. В Windows курсор будет оставаться в том же столбце консоли, но на следующей строке.

\r в Linux действует так же, как в Windows: перемещает курсор в начало строки Можно печатать различную информацию в одной строке, где вместо 1011 используется \r.

7 голосов
/ 10 августа 2011

На самом деле \r is 0x0D (^M) and \n is 0x0A (^J), но ..... в Windows:

\n will write 0x0D 0x0A

в Unix:

\r will write 0x0D
\n will write 0x0A
6 голосов
/ 10 августа 2011

Зависит от настройки.\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.

5 голосов
/ 10 августа 2011

Windows не различает \r\n и любые другие два символа.Однако есть одна ситуация, когда он рассматривается как один символ: если вы используете среду выполнения C и открываете файл как текст, \r\n в файле будет читаться как \n, а \n будет записыватьсяфайл как \r\n.

2 голосов
/ 10 августа 2011

Да, это два символа: возврат каретки '\ r', за которым следует перевод строки '\ n'.

0 голосов
/ 23 декабря 2013

Я провел несколько тестов (ничего особенного) с помощью Notepad ++ и Sublime Text 2 в Windows, и оказалось, что \r и \n действительно 2 разных символа, но ...

Различные текстовые редакторы могут вставлять или не вставлять \r при нажатии Return .

Попробуйте следующее в текстовом редакторе:

1
2
3
4
5

Затем нажмите Ctrl + F , включите регулярные выражения и найдите \r. В зависимости от вашего текстового редактора и его настроек, вы можете «ударить» или «не ударить» символ в конце каждой строки. Если приведенный выше текст скопирован из другого редактора, поведение также может отличаться ...

Некоторые текстовые редакторы допускают настройки в своих настройках, где вы можете указать, предпочитаете ли вы \r\n или unix-style \n, которые будут вставлены при нажатии Return . Кроме того, они могут позволить вам выбрать принудительное применение согласованного стиля путем удаления или вставки символа \r перед сохранением файла.

...