Windows altında oluşturulan her metin dosyası satırının sonunda `^ M`


10

Neden Windows Not Defteri'nde unix altında yapılan bir textfile açarsanız, ^Myeni bir satır olması gereken yeri bulacağınızı merak ediyordum.

Anladığım kadarıyla, Windows'da her satırın \r\n, yani 0x0D0AASCII'de, ^MASCII değeri varken sona ermesi 0x5E4D. Bu ikisini birinden diğerine ilişkilendiremem.


Windows'ta Notepad ++ gibi daha iyi bir düzenleyici kullanabilirsiniz. Dosyaları UNIX satır sonlarıyla kaydetmenizi, ancak Windows'ta Windows satır sonları varmış gibi görüntülemenizi sağlar. Sonra her iki işletim sistemi para cezası ile görüntüleyebilirsiniz.
Kevin

Ayrıca bkz. Jeff Atwood bunu
üstlendi

Yanıtlar:


19

Çizgi sonlarının önemli olduğu konusunda haklısınız; Her iki işletim sistemi de satırın "\ n" ile bitmesini bekler, ancak Windows bu unix'in beklemeden önce bir "\ r" ekler, bu nedenle unix programları "\ r" yi kendi yollarıyla çıkarır.

Dosya aslında iki karakter "^" ve "M" ile bitmiyor, bu yazdırılamaz karakterleri temsil etmenin yaygın bir yoludur. Programlar "^" ve baytın değerine karşılık gelen ve 1 için A ile başlayan bir harf verir. M 13. harftir ve '\ r' ASCII kodu 13'tür (veya dediğin gibi 0xD), bu nedenle "^ M"


2
Bu, Ctrl-M için de kısaca, bu karakteri klavye ile nasıl elde edeceğiniz.
Steven Pritchard

7
Komut satırı yardımcı programlarını dos2unixve unix2dosmetin dosyalarını formatlar arasında dönüştürmek için kullanabilirsiniz.
Chris Nava

1
@Chris Doğru, ama gerçekten soru ile ilgisi yok
Michael Mrozek

Teşekkürler! (1) Hangi programların yazdırılamayan karakterler çıktısını bu şekilde alacağını merak ediyordum? Örneğin, tüm metin editörleri / görüntüleyenler bu şekilde çalışıyor mu? (2) ne tür yazdırılamaz karakterler bu şekilde ele alınır ve hangi türler ele alınmaz? Örneğin, neden izleyiciler metin çıktısı yok ^Jiçin \n?
Tim

1
^ M gösterimi, GUI metin editörlerini onlarca yıl olmasa da yıllara göre öncekidir.
Chris Nava
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.