Напоминание - rn или nr?
Я просто не помню. Итак, каков правильный способ правильно завершить старомодные линии ASCII?
10 ответов
Если вы используете c#, вы должны использовать Environment.NewLine
, что соответственно MSDN:
строка, содержащая " \r\n "для платформ, отличных от Unix, или строка, содержащая" \n " для платформ Unix.
новая строка зависит от вашей ОС:
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 / утилита / флип/
Если вы сомневаетесь, используйте любой бесплатный hex viewer / editor, чтобы увидеть, как файл кодирует свою новую строку.
для меня я использую следующее руководство, чтобы помочь мне запомнить: 0D0A = \r\n = CR, LF = carriage return, line feed
последовательность CR (возврат каретки) - LF (линия подачи). Помните матричные принтеры? Именно так. Итак-правильный порядок \r \n
будьте осторожны с этим вручную.
На самом деле я бы посоветовал не делать все это.
на самом деле мы говорим о последовательности завершения линии LTS, которая специфична для платформы.
Если вы откроете файл в текстовом режиме (т. е. не двоичном), то потоки преобразуют "\n" в правильный LTS для вашей платформы. Затем преобразуйте LTS обратно в "\n " при чтении файла.
в результате, если вы печатаете "\r\n " в windows файл вы получите последовательность "\r\r\n " в физическом файле (посмотрите с помощью шестнадцатеричного редактора).
конечно, это реальная боль, когда дело доходит до передачи файлов между платформами.
теперь, если вы пишете в сетевой поток, я бы сделал это вручную (так как большинство сетевых протоколов вызывают это специально). Но я бы убедился, что поток не делает никакой интерпретации (поэтому двоичный режим был подходящим).
с Википедия (вы можете прочитать, что правильно для вашей ОС в этой статье):
системы, основанные на ASCII или совместимый набор символов используйте либо LF (Line feed, '\n', 0x0A, 10 в десятичном формате) или CR (Возврат каретки, '\r', 0x0D, 13 in decimal) индивидуально или CR следовал по LF (CR+LF, '\r\n', 0x0D0A).
\r\n
странно, я помню это, потому что это противоположность пишущей машинки я использовал.
Ну если это нормально я не помню... :-)
в пишущей машинке, когда вы закончите цифру строки вы используете рычаг возврата каретки, что перед тем делает барабан,в newline, а после позволяют вручную управлять возврат каретки.
вы можете слушать из этой записи от freesound.org звук подачи бумаги в начале, и примерно в -1: 03 секунд от конца, после звонка, предупреждающего о конце линии звук барабана, который катится и после одного из возврата каретки.
Если вы используете c#, почему бы не использовать Environment.NewLine
? (я предполагаю, что вы используете некоторые объекты file writer... просто передайте это Environment.NewLine
и он будет обрабатывать прямо Терминаторы.