CR i LF
Amerykański Standard Code for Information Interchange (ASCII) zdefiniował znaki kontrolne, w tym CARRIAGE-RETURN (CR) i LINE-FEED (LF), które były (i nadal są) używane do kontrolowania pozycji drukowania na drukarkach w sposób analogiczny do mechaniczne maszyny do pisania, które poprzedziły wczesne drukarki komputerowe.
Zależność od platformy
W Windows tradycyjnym separatorem linii w plikach tekstowych jest CR, a po nim LF
W starych (wcześniejszych niż OSX) systemach Apple Macintosh tradycyjnym separatorem linii w plikach tekstowych był CR
W systemach Unix i Linux tradycyjnym separatorem linii w plikach tekstowych jest LF.
\ n i \ r
W wielu językach programowania i skryptów \n
oznacza „nowy wiersz”. Czasami (ale nie zawsze) oznacza to znak ASCII LINE-FEED (LF), który, jak mówisz, przesuwa kursor (lub pozycję drukowania) w dół o jedną linię. W drukarce lub maszynie do pisania spowoduje to przesunięcie papieru o jedną linię w górę.
Niezmiennie \r
oznacza znak ASCII CARRIAGE-RETURN (CR), którego nazwa faktycznie pochodzi od mechanicznych maszyn do pisania, w których znajdował się klawisz powrotu karetki, który spowodował, że rolka („karetka”), która niosła papier, przesunęła się w prawo, napędzana przez sprężynę, tak daleko, jak to możliwe. W ten sposób ustawiając bieżącą pozycję pisania na lewym marginesie.
Programowanie
W niektórych językach programowania \n
może oznaczać zależną od platformy sekwencję znaków kończących lub oddzielających wiersze w pliku tekstowym. Na przykład w Perlu print "\n"
produkuje inną sekwencję znaków w systemie Linux niż w systemie Windows.
W Javie najlepszą praktyką jest to, że jeśli chcesz używać natywnych zakończeń linii dla platformy wykonawczej, nie należy jej używać \n
ani \r
wcale. Powinieneś użyć System.getProperty("line.separator")
. Powinieneś używać \n
i \r
gdzie chcesz LF i CR niezależnie od platformy (np. Jak w HTTP, FTP i innych protokołach komunikacji internetowej).
Uniksowy styl
W powłoce uniksowej stty
można użyć polecenia, aby spowodować translację powłoki między tymi różnymi konwencjami. Na przykład stty -onlcr
spowoduje, że powłoka następnie przetłumaczy wszystkie wychodzące LF na CR LF.
Linux i OSX przestrzegają konwencji Uniksa
Pliki tekstowe
Pliki tekstowe są nadal niezwykle ważne i szeroko stosowane. Na przykład HTML i XML to przykłady plików tekstowych. Większość ważnych protokołów internetowych, takich jak HTTP, jest zgodna z konwencjami plików tekstowych i zawiera specyfikacje zakończeń linii.
Drukarki
Większość drukarek innych niż najtańsze nadal szanuje CR i LF. W rzeczywistości są one fundamentalne dla najczęściej używanych języków opisu strony - PCL i Postscript.
\r\n
w systemie Windows\n\r
jest to w porządku, ale tak nie jest i pamiętam to, ponieważ\r\n
jest akronimem dla zarejestrowanej pielęgniarki. Słyszę również, że\n
ludzie używają tego w Linuksie i\r
nie są używane w tym samym celu co\r\n
.\r
jest używany w naprawdę starym MacOS. Jednak nie zweryfikowałem tych faktów.