Ya ya, saya sadar bahwa '\n'
menulis baris baru di UNIX sedangkan untuk Windows ada urutan dua karakter: '\r\n'
. Semua ini sangat bagus secara teori, tetapi pertanyaan saya adalah mengapa ? Mengapa karakter carriage return ekstra di Windows? Jika UNIX dapat melakukannya di \n
mengapa dibutuhkan Windows dua karakter untuk melakukan ini?
Saya membaca buku Python David Beazley dan dia berkata:
Sebagai contoh, pada Windows, menulis karakter '\ n' sebenarnya menghasilkan urutan dua karakter '\ r \ n' (dan ketika membaca file kembali, '\ r \ n' diterjemahkan kembali menjadi satu '' n ' karakter).
Mengapa perlu upaya ekstra?
Saya akan jujur. Saya sudah tahu perbedaannya sejak lama tetapi tidak pernah repot untuk bertanya MENGAPA. Saya harap itu dijawab hari ini.
Terima kasih atas waktunya.
sumber
\r\n
. Ini juga digunakan oleh sebagian besar protokol internet berbasis teks (misalnya SMTP, HTTP, dll) untuk alasan yang sama seperti Windows (yaitu riwayat).System.out.printf()
atauString.format()
) pastikan Anda menggunakan%n
sebagai CRLF Anda untuk tujuan kompatibilitas OS.\n
sudah ditinggalkan.\n\r
beberapa kali. (Saya pikir itu adalah sesuatu dari NetWare.)Jawaban:
Kompatibilitas terbalik.
Windows kompatibel dengan MS-DOS (agresif bahkan, bahkan) dan MS-DOS menggunakan konvensi CR-LF karena MS-DOS kompatibel dengan CP / M-80 (agak tidak sengaja) yang menggunakan konvensi CR-LF karena itu adalah cara Anda mengendarai printer (karena printer pada awalnya adalah mesin tik yang dikendalikan komputer).
Printer memiliki perintah terpisah untuk memindahkan kertas ke atas satu baris ke baris baru, dan perintah terpisah untuk mengembalikan media (tempat kertas dipasang) kembali ke margin kiri.
Itu sebabnya. Dan, ya, itu menjengkelkan, tetapi itu adalah bagian dari paket yang memungkinkan MS-DOS untuk menang atas CP / M, dan Windows 95 untuk memenangkan semua GUI lain di atas DOS, dan Windows XP untuk mengambil alih dari Windows 98.
(Catatan: Printer laser modern masih memiliki perintah ini karena mereka juga kompatibel dengan printer sebelumnya - HP khususnya melakukan ini dengan baik)
Bagi mereka yang tidak terbiasa dengan mesin tik, di sini adalah video yang menunjukkan bagaimana pengetikan dilakukan: http://www.youtube.com/watch?v=LJvGiU_UyEQ . Perhatikan bahwa kertas pertama kali dipindahkan ke atas, dan kemudian carriage dikembalikan, bahkan jika itu terjadi dalam gerakan sederhana. Sang ding memberi tahu juru ketik bahwa akhir sudah dekat, dan untuk mempersiapkannya.
sumber
Sejauh yang saya tahu ini mengingatkan kembali ke zaman mesin tik.
\r
adalah carriage return, yang bergerak di mana Anda mengetik halaman kembali ke kiri (atau kanan jika itu budaya Anda)\n
adalah baris baru, yang memindahkan kertas Anda ke atas.Melakukan hanya satu ini pada mesin tik akan menempatkan Anda di tempat yang salah untuk mulai menulis baris teks baru.
Ketika komputer muncul saya kira beberapa orang menyimpan model lama, tetapi yang lain menyadari bahwa itu tidak perlu dan merangkum baris baru penuh sebagai satu karakter.
sumber
Saya tidak tahu apakah ini pengetahuan umum, tetapi perlu dicatat bahwa CR masih dipahami oleh emulator terminal modern:
Ini berguna untuk indikator kemajuan, misalnya
sumber
Secara historis, umpan baris berarti bahwa pelat - roller tempat Anda mengetik - memutar satu baris, menyebabkan teks muncul di baris berikutnya ... tetapi di kolom berikutnya.
Pengembalian kereta berarti "mengembalikan bit yang Anda ketikkan ke awal baris".
Windows menggunakan CR + LF karena MS-DOS melakukannya, karena CP / M melakukannya, karena masuk akal untuk jalur serial.
Unix menyalin konvensi \ nnya karena Multics melakukannya.
Saya menduga jika Anda menggali cukup jauh ke belakang, Anda akan menemukan ketidaksepakatan politik antara pelaksana!
(Anda meninggalkan sedikit kesenangan ekstra, di mana konvensi Mac (atau dulu) hanya menggunakan CR untuk memisahkan baris. Dan sekarang Unicode juga memiliki pemisah baris sendiri, U + 2028!)
sumber
Sejarah Karakter Newline (Wikipedia):
sumber
Ada apa dengan orang-orang yang bertanya "mengapa Unix dapat melakukan
\n
dan bukan Windows"? Ini pertanyaan yang aneh.\n
dan\r\n
baik-baik saja. Mereka juga menampilkan\r\n
sehingga semua orang senang. Suatu program tidak hanya "melakukan" salah satu\n
atau\r\n
- ia menerima satu, yang lain, atau keduanya, dan menghasilkan satu, yang lain, atau keduanya.\n
alih - alih yang benar\r\n
.\n
sepenuhnya mengetahui bahwa ada beberapa protokol dan program yang tidak menyukainya?sumber
Alasan konvensi bertahan pada berbagai sistem mereka (\ n pada sistem tipe unix, \ r \ n pada Windows, dll) adalah bahwa setelah Anda memilih konvensi, Anda TIDAK dapat mengubahnya tanpa merusak banyak file orang. Dan itu umumnya disukai.
Sistem tipe unix dikembangkan (sangat awal) menggunakan berbagai model teletype, dan pada beberapa titik seseorang memutuskan peralatan harus membawa kembali ketika melakukan feed line.
Windows berasal dari DOS, jadi untuk Windows pertanyaannya adalah: Mengapa DOS menggunakan urutan cr / lf ini? Saya menduga itu ada hubungannya dengan CP / M, di mana DOS memiliki beberapa root itu. Sekali lagi, model teletype tertentu mungkin memainkan peran.
sumber
\n
, tetapi terus menggunakan\r\n
untuk saat ini? Jika mereka melakukan itu dimulai dengan Windows XP, mereka sekarang bisa mulai menabung file dengan\n
bukan\r\n
.Ini jawaban dari sumber terbaik - Microsoft. Mengapa terminator garis CR + LF?
sumber