`^ M` na końcu każdego wiersza plików tekstowych generowanych w systemie Windows


10

Zastanawiałem się, dlaczego jeśli otworzysz plik tekstowy utworzony w Notatniku Windows pod Uniksem, przekonasz się, że ma on ^Mtam, gdzie powinna być nowa linia?

Rozumiem, że w systemie Windows każda linia jest zakończona \r\n, tj. 0x0D0AW ASCII, podczas gdy ^Mma wartość ASCII 0x5E4D. Nie mogę powiązać tych dwóch ze sobą.


W systemie Windows możesz użyć lepszego edytora, takiego jak Notepad ++. Pozwoli ci to zapisać pliki z zakończeniami linii UNIX, ale przeglądaj je w systemie Windows tak, jakby miały zakończenia linii Windows. Następnie możesz wyświetlić go w obu systemach operacyjnych.
Kevin

Odpowiedzi:


19

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 ”


2
To także skrót dla Ctrl-M, czyli jak uzyskać tę postać za pomocą klawiatury.
Steven Pritchard

7
Możesz używać narzędzi wiersza poleceń dos2unixi unix2doskonwertować pliki tekstowe między formatami.
Chris Nava

1
@Chris Prawda, ale tak naprawdę nie ma nic wspólnego z pytaniem
Michael Mrozek

Dzięki! (1) Zastanawiałem się, jakie programy będą w ten sposób wyświetlać znaki niedrukowalne? Na przykład, czy wszystkie edytory / przeglądarki tekstu działają w ten sposób? (2) jakie rodzaje znaków niedrukowalnych są traktowane w ten sposób, a jakie nie? Na przykład, dlaczego nie tekst wyjście widzów ^Jza \n?
Tim

1
Reprezentacja ^ M poprzedza edytory tekstu GUI o lata, a nawet dekady.
Chris Nava,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.