Po prostu ich nie pamiętam. Więc jaki jest właściwy sposób prawidłowego zakończenia starych linii ASCII?
Po prostu ich nie pamiętam. Więc jaki jest właściwy sposób prawidłowego zakończenia starych linii ASCII?
Odpowiedzi:
Użyłbym słowa „ r etur n ”, aby pamiętać, że r występuje przed n.
\n\r
i \r\n
to samo, nie robią ten sam efekt? Czy dostrzegasz różnicę?
Jeśli używasz C #, powinieneś użyć Environment.NewLine
, który zgodnie z MSDN to:
Ciąg zawierający „\ r \ n” dla platform innych niż Unix lub ciąg zawierający „\ n” dla platform Unix.
Environment.NewLine
jest w porządku. Jeśli jednak piszesz rzeczy w dobrze zdefiniowanym formacie, format może również definiować nowy wiersz. Na przykład protokół HTTP stwierdza, że musisz użyć\r\n
jako terminatora linii dla nagłówków itp., Niezależnie od platformy.
Nowa linia zależy od systemu operacyjnego:
DOS & Windows: \r\n 0D0A (hex), 13,10 (decimal)
Unix & Mac OS X: \n, 0A, 10
Macintosh (OS 9): \r, 0D, 13
Więcej informacji tutaj: https://ccrma.stanford.edu/~craig/utility/flip/
W razie wątpliwości skorzystaj z dowolnej darmowej przeglądarki / edytora szesnastkowego, aby zobaczyć, jak plik koduje nową linię.
Dla mnie używam następującego przewodnika, aby pomóc mi zapamiętać: 0D0A = \ r \ n = CR, LF = ca rr iage r eturn, li n e feed
0D0A
na pamięć, ale wciąż mylą \r
i \n
.
Sekwencja to CR (Carriage Return) - LF (Line Feed). Pamiętasz drukarki igłowe? Dokładnie. Tak więc - poprawna kolejność to \ r \ n
W każdym języku .NET Environment.NewLine
byłoby preferowane.
Uważaj, aby to zrobić ręcznie.
W rzeczywistości Radzę nie robi tego w ogóle.
W rzeczywistości mówimy o sekwencji zakończenia linii LTS, która jest specyficzna dla platformy.
Jeśli otworzysz plik w trybie tekstowym (tzn. Nie binarnym), strumienie przekonwertują „\ n” na poprawny LTS dla twojej platformy. Następnie przekonwertuj LTS z powrotem na „\ n” podczas czytania pliku.
W rezultacie, jeśli wydrukujesz „\ r \ n” do pliku systemu Windows, otrzymasz sekwencję „\ r \ r \ n” w pliku fizycznym (spójrz za pomocą edytora szesnastkowego).
Oczywiście jest to prawdziwy ból, jeśli chodzi o przesyłanie plików między platformami.
Teraz, jeśli piszesz do strumienia sieciowego, zrobiłbym to ręcznie (ponieważ większość protokołów sieciowych tak to nazywa). Ale upewniłbym się, że strumień nie dokonuje żadnej interpretacji (więc tryb binarny był odpowiedni).
\r\n
dla Windows będzie dobrze.
\n
również świetnie sobie radzi w systemie Windows, w tym w najnowszej wersji Notatnika.
Z Wikipedii (możesz przeczytać, który jest odpowiedni dla twojego systemu operacyjnego w tym artykule):
Systemy oparte na ASCII lub zgodnym zestawie znaków używają LF (przesunięcie wiersza, „\ n”, 0x0A, 10 w systemie dziesiętnym) lub CR (powrót karetki, „\ r”, 0x0D, 13 w systemie dziesiętnym) indywidualnie lub CR, po którym następuje LF (CR + LF, '\ r \ n', 0x0D0A).
\r\n
Dziwnie jest powiedzieć, że pamiętam, ponieważ jest to przeciwieństwo używanej maszyny do pisania .
Cóż, jeśli to normalne, nie musiałbym o tym pamiętać ...:-)
W maszynie do pisania po zakończeniu cyfry linii używasz dźwigni powrotu karetki , która wcześniej sprawia, że bęben obraca się , nowa linia , a po tym pozwala ręcznie obsługiwać powrót karetki .
Możesz posłuchać z tego nagrania ze strony freesound.org dźwięk podawania papieru na początku i około -1: 03 sekund od końca, po ostrzeżeniu dzwonka o końcu linii dźwięku bębna, który się toczy i po jeden ze zwrotu karetki.