Повернення каретки Windows \ r \ n складається з двох символів або одного символу?


74

Повернення каретки Windows, \r\nпоки воно знаходиться \nв Unix, \r\nрозглядається як два символи?

Відповіді:


113

Це два символи:

  • \r є повернення каретки;
  • \n - це лінійна подача.

Два символи в поєднанні представляють новий рядок у Windows. Тоді як на Linux, \nпредставляє новий рядок. Він переміщує курсор на початок нового рядка в Linux. У Windows курсор залишатиметься в тому ж стовпці на консолі, але в наступному рядку.

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


3
+1. Як додаткова інформація для ОП: Newline .
informatik01

7

Насправді \r is 0x0D (^M) and \n is 0x0A (^J), але ..... на вікнах:

\n will write 0x0D 0x0A

на unix:

\r will write 0x0D
\n will write 0x0A

Отже, у Windows нам слід надрукувати \ x0A явно, якщо ми хочемо перемістити на 1 рядок вниз, залишаючись у тому ж стовпці?
В'єтнам

Якщо я маю рацію, це пов’язано з перетворенням символів, що відбувається під час відкриття файлів у вигляді текстових потоків. Поводження stdoutз бінарним потоком, а не як текстовий потік, призведе до \nнаписання єдиного тексту, 0x0Aа не 0x0D 0x0Aв Windows. Див. Відповідь @FredFoo.
loxaxs

6

Залежить від обстановки. \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

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



0

Я провів кілька тестів (нічого фантазії) з Notepad ++ і Sublime Text 2 на Windows, і виявляється, що \rі \nсправді 2 різних символів, але ...

Різні текстові редактори можуть вставляти або не вставляти, \rколи натискається клавіша повернення .

Спробуйте наступне у своєму текстовому редакторі:

1
2
3
4
5

Потім натисніть Ctrl + F , увімкніть регулярні вирази та виконайте пошук \r. Залежно від вашого текстового редактора та його налаштувань, ви можете "вдарити" або "не вдарити" символ у кінці кожного рядка. Якщо наведений текст скопійовано з іншого редактора, поведінка також може відрізнятися ...

Деякі текстові редактори дозволяють налаштовувати у своїх налаштуваннях, де ви можете вказати, чи віддаватимете перевагу \r\nстилю Unix, \nколи ви натискаєте клавішу Return . Крім того, вони можуть дозволити вам застосувати послідовний стиль, зачистивши або вставивши \rсимвол перед збереженням файлу.


4
Не слід покладатися на текстовий редактор, оскільки деякі з них можуть робити магію під час завантаження файлу. Правильним способом перевірки було б відкрити файл у шістнадцятковому редакторі.
Telemat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.