Zastanawiałem się, dlaczego jeśli otworzysz plik tekstowy utworzony w Notatniku Windows pod Uniksem, przekonasz się, że ma on ^M
tam, gdzie powinna być nowa linia?
Rozumiem, że w systemie Windows każda linia jest zakończona \r\n
, tj. 0x0D0A
W ASCII, podczas gdy ^M
ma wartość ASCII 0x5E4D
. Nie mogę powiązać tych dwóch ze sobą.
Odpowiedzi:
Masz rację, że zakończenia linii są ważne; oba systemy operacyjne oczekują, że linia skończy się na „\ n”, ale system Windows dodaje również „\ r”, zanim ten uniks się nie spodziewa, więc programy uniksowe będą wypisywać „\ r” na swój sposób.
Plik tak naprawdę nie kończy się na dwóch znakach „^” i „M”, jest to po prostu powszechny sposób reprezentowania znaków niedrukowalnych. Programy wypiszą „^” i literę odpowiadającą wartości bajtu, zaczynając od A dla 1. M jest 13. literą, a „\ r” to kod ASCII 13 (lub 0xD, jak powiedziałeś), więc widzisz „^ M ”
źródło
dos2unix
iunix2dos
konwertować pliki tekstowe między formatami.^J
za\n
?