Bahasa Melayu

Alat pembangun · Perbandingan teks

Mengapa Windows dan Unix Tidak Setuju pada Penghujung Talian: Kisah CR, LF dan CRLF

· Latar belakang

perbezaan teks penghujung baris perisian-sejarah

Tiga laluan penanda baris baharu menumpu kepada pasangan baris teks yang sama
Ilustrasi vektor ToolAcre asal

Mengesan penghujung talian daripada mesin taip dan teletaip kepada sistem pengendalian moden dan menerangkan sebab dua konvensyen masih wujud bersama dalam setiap projek merentas platform.

Satu watak yang tidak kelihatan, berdekad-dekad geseran — dibuka dengan gangguan merentas platform yang berterusan

Pengakhiran baris tidak kelihatan dalam editor biasa tetapi boleh menjadi penting kepada fail dan protokol. Dalam ToolAcre, walau bagaimanapun, CR, LF dan CRLF dinormalkan sebelum perbandingan baris. Sepasang yang berbeza sahaja dalam pemisah tersebut menghasilkan tatasusunan baris yang sama dan hasil yang sama.

Tingkah laku itu menyelesaikan soalan praktikal untuk laluan ini sambil mengehadkan perkara yang boleh didiagnosis. Perbandingan tidak dapat membuktikan bait baris baharu mana yang terkandung dalam fail asal selepas teks sampai ke editornya. Alat sedar bait diperlukan untuk pemeliharaan atau semakan protokol.

Pemulangan pengangkutan dan suapan talian pada mesin taip — menerangkan dua tindakan fizikal yang diterangkan pada asalnya

Istilah pemulangan pengangkutan dan suapan talian mempunyai makna fizikal dan sejarah, tetapi repositori tidak mengandungi sumber mesin taip. Mengulangi cerita asal mekanikal dari ingatan akan melanggar kontrak bukti walaupun akaun itu terdengar biasa.

Oleh itu artikel ini menganggap CR sebagai ` ` unit kod dan LF as ` ` sahaja di mana pelaksanaan menggunakannya. Penjelasan sejarah perlu ditambah kemudian daripada piawaian utama atau arkib dan bukannya dipinjam daripada garis besar yang secara jelas bukan sumber.

Makna mesin taip ialah tuntutan sejarah yang memerlukan sumber luar

Begitu juga, fail sumber tidak mendokumenkan konvensyen teletaip atau keputusan sistem pengendalian awal. Mereka mendedahkan sahaja pilihan keserasian dalam JavaScript semasa: gantikan setiap CRLF atau CR tunggal dengan LF sebelum berpecah.

Transformasi itu menerima teks yang ditampal yang dihasilkan di bawah beberapa konvensyen tanpa mengisi keluaran dengan perubahan akhir sahaja. Ia merupakan keputusan pelaksanaan yang boleh dilihat dalam satu ungkapan biasa dan disematkan oleh ujian untuk ketiga-tiga bentuk.

Keturunan teletaip dan sistem pengendalian adalah bukti repositori di luar

Adalah perkara biasa untuk mengaitkan Unix dengan LF, Windows dengan CRLF dan sistem yang lebih lama dengan CR tunggal, tetapi repositori semasa tidak boleh berfungsi sebagai bukti sejarah penerimaan tersebut. Tuntutan selamat beroperasi: ketiga-tiga input menjadi LF di dalam `splitLines`.

LF terminal tidak mencipta baris kosong terakhir, manakala baris kosong di tengah kekal. Perbezaan ini bermakna kandungan logik dikekalkan walaupun perbezaan pemisah fizikal dipadamkan. Perbandingan adalah berorientasikan baris, bukan pemeliharaan bait.

Kod itu membuktikan tiga konvensyen menormalkan; ia tidak membuktikan mengapa sistem menggunakannya

Sesetengah protokol rangkaian dan mesej menentukan penamat talian yang tepat, tetapi keperluannya mesti datang daripada spesifikasinya. Normalisasi ToolAcre menjadikannya tidak sesuai untuk membuktikan pematuhan kepada format wayar sedemikian kerana bukti pemisah asal sengaja dialih keluar.

Gunakan pemapar hex atau pengesah protokol sebelum menghuraikan apabila jujukan CRLF tepat penting. Hasil perbezaan Teks yang bersih boleh mengesahkan padanan garis logik dan pada masa yang sama menyembunyikan kecacatan tahap pengangkutan. Kedua-dua pemerhatian boleh menjadi benar kerana alat menjawab soalan yang berbeza.

Keperluan protokol memerlukan spesifikasi mereka sendiri dan ditinggalkan di sini

Bandingkan `alpha beta`, `alpha beta` dan `alpha beta` secara berpasangan. Setiap baris menghasilkan dua baris, alfa dan beta, dan tiada penambahan atau penyingkiran. Abaikan ruang kosong tidak menyebabkan kesaksamaan ini; normalisasi telah pun berlaku semasa pemisahan.

Tambahkan ruang mengekor pada satu baris beta dan mod biasa kini akan melaporkan perbezaan. Dayakan Abaikan ruang kosong dan ia mungkin hilang. Urutan ini memisahkan pengendalian baris baharu daripada pengendalian ruang kosong kunci baris dan menghalang pengkreditan pilihan yang salah.

Contoh yang berfungsi: ketiga-tiga borang penamat membandingkan sama sebelum pilihan ruang kosong

Laluan ini tidak mengkonfigurasi editor, menulis semula fail, menetapkan atribut Git atau pengakhiran penukaran pukal. Ia juga tidak mendedahkan pemisah asal dalam baris hasil. Rentetan yang ditampal memasuki saluran paip perbandingan, bukan utiliti penghijrahan baris baharu.

Punca sejarah dan piawaian protokol ditinggalkan sumber yang belum selesai. Kekangan itu meninggalkan artikel yang lebih kecil tetapi tepat: perkara yang dilakukan oleh tiga konvensyen dalam pelaksanaan ini, baris kosong yang kekal dan mengapa kesaksamaan di sini tidak mewujudkan identiti bait.

Bawa pulang: ketahui konvensyen yang dibawa oleh teks anda — meringkaskan sejarah dan cara perbandingan Teks ToolAcre membantu mengesahkan sama ada perbezaan hanyalah penghujung baris

Ketahui bukti yang terselamat daripada alat tersebut. Selepas penormalan, ToolAcre boleh membandingkan kandungan baris logik merentas pemisah biasa. Ia tidak dapat memberitahu anda konvensyen mana sama ada sumber yang digunakan atau sama ada pengguna hiliran memerlukan satu jujukan bait yang tepat.

Gunakan perbezaan pelayar untuk semakan manusia dan semakan tahap bait untuk repositori atau penguatkuasaan protokol. Alat boleh dipercayai apabila transformasinya jelas; pengulas tetap bertanggungjawab untuk memilih salah satu yang mengekalkan harta benda yang perlu mereka sahkan.