Напоминание - \ r \ n или \ n \ r? - PullRequest
366 голосов
/ 30 июня 2011

Я просто не могу вспомнить их. Итак, как правильно завершить старомодные линии ASCII?

Ответы [ 10 ]

1010 голосов
/ 30 июня 2011

Я бы использовал слово ' r etur n ', чтобы запомнить, r стоит перед n.

52 голосов
/ 30 июня 2011

Если вы используете C #, вы должны использовать Environment.NewLine, что в соответствии с MSDN это:

Строка, содержащая «\ r \ n» для не-Unix-платформ, или строка, содержащая «\ n» для Unix-платформ.

34 голосов
/ 08 ноября 2012

Новая строка зависит от вашей ОС:

DOS & Windows: \r\n 0D0A (hex), 13,10 (decimal)
Unix & Mac OS X: \n, 0A, 10
Macintosh (OS 9): \r, 0D, 13

Подробнее здесь: https://ccrma.stanford.edu/~craig/utility/flip/

Если сомневаетесь, воспользуйтесь любым свободно распространяемым шестнадцатеричным просмотрщиком / редактором, чтобы увидеть, как файл кодирует новую строку.

Для меня я использую следующее руководство, чтобы помочь мне вспомнить: 0D0A = \ r \ n = CR, LF = ca rr iage r eturn, li n e feed

20 голосов
/ 30 июня 2011

Последовательность: CR (возврат каретки) - LF (перевод строки). Помните матричные принтеры? Именно так. Итак - правильный порядок \ r \ n

8 голосов
/ 30 июня 2011

В любом языке .NET предпочтительным будет Environment.NewLine.

5 голосов
/ 30 июня 2011

Будьте осторожны с этим вручную.
На самом деле я бы посоветовал не делать это вообще.

На самом деле речь идет о последовательности завершения строки LTS, специфичной для платформы.

Если вы откроете файл в текстовом режиме (т.е. не в двоичном), то потоки преобразуют «\ n» в правильный LTS для вашей платформы. Затем преобразуйте LTS обратно в "\ n" при чтении файла.

В результате, если вы напечатаете «\ r \ n» в файл Windows, вы получите последовательность «\ r \ r \ n» в физическом файле (посмотрите с помощью шестнадцатеричного редактора).

Конечно, это настоящая боль при передаче файлов между платформами.

Теперь, если вы пишете в сетевой поток, я бы сделал это вручную (так как большинство сетевых протоколов это специально называют). Но я бы удостоверился, что поток не выполняет никакой интерпретации (поэтому двоичный режим был уместен).

4 голосов
/ 30 июня 2011

С Википедия (вы можете прочитать, что является правильным для вашей ОС в этой статье):

Системы на основе ASCII или совместимых набор символов использовать либо LF (Line feed, '\ n', 0x0A, 10 в десятичном виде) или CR (Возврат каретки, '\ r', 0x0D, 13 в десятичный) по отдельности или после CR LF (CR + LF, '\ r \ n', 0x0D0A).

4 голосов
/ 30 июня 2011

\r\n для Windows будет хорошо.

3 голосов
/ 21 апреля 2016

\r\n

Странно сказать, я помню это, потому что это противоположно пишущей машинке Я использовал.
Ну, если бы это было нормально, мне не нужно было бы это помнить ... :-)

typewriter from wikipedia * Изображение из Википедии

В пишущей машинке, когда вы закончите оцифровывать строку, вы используете рычаг возврата каретки , который до того, как катит барабан, символ новой строки , а после позволяют вручную управлять возврат каретки .

Вы можете прослушать из этой записи с freesound.org звук подачи бумаги в начале и примерно через -1: 03 секунды с конца, после звукового предупреждения об окончании Звук линии барабана, который катится и после того, как возврат каретки.

2 голосов
/ 30 июня 2011

если вы используете C #, почему бы не использовать Environment.NewLine? (Я предполагаю, что вы используете некоторые объекты записи файлов ... просто передайте ему Environment.NewLine, и он будет обрабатывать правильные терминаторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...