2010-09-29 18 views
5

Obaj mają na myśli "nową linię", ale kiedy jest używana jedna nad drugą?Jaka jest różnica między n a r n?

+0

Jeśli zauważysz '\ r', karetka nie powróci do pozycji startowej ;-) – chiccodoro

+0

haha ​​ładne 7 odpowiedzi w 5 minut .. tylko ze 29 odsłon, czyli 1/4 osób napisało odpowiedź :) –

+0

Ale to zdecydowanie nie jest agnostykiem językowym. '\ r \ n' są typowymi sekwencjami ucieczkowymi w wielu językach podobnych do c i c, ale na pewno nie we wszystkich językach. – Oded

Odpowiedz

16

\r\n jest sprawdzonym systemu Windows styl

\n JEST POSIX styl

\r Jest to stary pre-OS X Mac styl, Nowoczesne Mac Korzystanie POSIX stylu.


\r to powrót carrige i \n jest wysunięcie wiersza, w starych komputerów gdzie nie mieć monitora, mają tylko drukarki, aby wydostać się programy doprowadzić do użytkownika, jeśli chcesz uzyskać druk od wpatrując od nowa linia z lewej, trzeba dostać \n dla przewodzie zasilającym i \r dla dostać powrót karetki do najbardziej lewym położeniu, to jest od starych komputerów składni zapisanych do tej pory na systemu Windows platformy.

+0

Zwróć uwagę, że '\ r' to tylko" Styl Mac "dla Mac OS X przed wersją. Współczesne komputery Mac używają stylu POSIX, ponieważ są ostatecznie oparte na pochodnej BSD. –

+0

@Tyler McHenry: dzięki za recenzję, zaktualizowany! ;-) – Svisstack

+1

CR + LF jest powszechnie stosowany w wielu protokołach sieciowych (takich jak HTTP), niezależnie od systemu operacyjnego używanego do przesyłania danych. '\ r' jest często mapowane do CR, gdy system docelowy używa ASCII lub Unicode jako swojego systemu znakowego. (Jeśli system docelowy używa EBCDIC, to '\ r' może nie mieć mapowania.)' \ N' jest trudniejsze, ponieważ zależy od kontekstu. Jest często mapowany na ASI-LINE/Unicode LINE FEED, ale nie zawsze jest to takie proste. Odpowiedzi na pytanie "Możliwy duplikat" zawierają szczegóły. –

1

'\ n' jest domyślnie w systemie Unix, \ r \ n jest domyślny w systemie Windows.

2

\ n to tylko znak nowej linii, \ r \ n to znak nowej linii i znak powrotu karetki (tzn. Przesunięcie kursora w lewo).

1

Różne systemy operacyjne obsługują znaki nowej linii w inny sposób. Oto krótka lista najczęściej spotykanych: DOS i Windows

Oczekują, że znak nowej linii będzie kombinacją dwóch znaków, a mianowicie "\ r \ n" (lub 13, a następnie 10).

UNIX (stąd Linux, jak również)

Unix wykorzystuje pojedynczy '\ n', aby wskazać, nowego.

Mac

Mac używa pojedynczego "\ r".

powoduje to problemy podczas przesuwania aplikacji z systemu Windows na system Mac, gdy używasz ścieżek do folderów i podobnie.

0

Różnica między różnymi systemami operacyjnymi Windows, znak nowej linii jest \r\n podczas Linux jest tylko \n Mac OSX właśnie \r jej naprawdę tylko kwestia co projektanci OS to pojawiło się

1

\ n oznacza nową linię. Oznacza to, że kursor musi przejść do następnej linii.

\ r oznacza powrót karetki. Oznacza to, że kursor powinien wrócić do początku linii.

Programy uniksowe i uniksowe zwykle potrzebują tylko nowej linii (\ n).

Programy Windows i Windows zwykle wymagają obu.

1

ten sposób nowa linia jest reprezentowana w systemach operacyjnych Windows (\ r \ n) i Linux (\ n)

Na Unix \ r jest powrót karetki (CR) i Kanał \ na linii (LF), które razem są identyfikatorem Windows newline i zastępujesz je identyfikatorem nowej linii Unix.

W systemie Windows \ r jest także CR, ale \ n jest kombinacją CR i LF. Tak więc skutecznie próbujesz zastąpić CR + CR + LF przez CR + LF. Nie ma większego sensu, robi to.

Od "perldoc perlop": Wszystkie systemy używają wirtualnego "" \ n "" do reprezentowania terminatora linii, nazywanego "znakiem nowej linii". Nie ma czegoś takiego jak niezmienna, fizyczna postać. Jest tylko złudzeniem, że sterowniki systemu operacyjnego, biblioteki C i Perl wszystkie konspirują do zachowania. Nie wszystkie systemy odczytują "" \ r "" jako ASCII CR i "" \ n "" jako ASCII LF. Na przykład na komputerze Macintosh są one odwrócone, aw systemach bez terminatora linii "" \ n "" może nie wyświetlać rzeczywistych danych. Ogólnie rzecz biorąc, używaj "\ n" "kiedy oznacza" nową linię "dla twojego systemu, ale używaj literalnego ASCII, kiedy potrzebujesz dokładnego znaku. Na przykład większość protokołów sieciowych oczekuje od i preferuje CR + LF ("" \ 015 \ 012 "" lub "" \ cM \ cJ "") dla terminatorów linii, i chociaż często akceptują tylko "" \ 012 "" , rzadko tolerują tylko "" \ 015 "". Jeśli masz nawyk używania "\ n" "do pracy w sieci, możesz pewnego dnia wypalić .

0

W języku C#, można po prostu użyć Environment.NewLine

+0

Jak na ironię, chociaż jest to preferowane użycie w stosunku do "\ n" lub "\ r \ n" (przynajmniej w DOT NET), to w rzeczywistości nie odpowiada na oryginalne pytanie. – mickeyf

Powiązane problemy