WinSCP mengacaukan jeda baris dalam file - bagaimana cara menghindarinya?

5

Saya mulai muak dengan bagaimana WinSCP mengacaukan jeda baris.

this is line 1
this is line 2

Akan berubah menjadi

this is line 1

this is line 2

Saya hanya bisa menggunakan FileZilla untuk FTP dan Putty untuk SCP (saya pikir dempul bisa mengatasinya) tetapi, itu agak menjengkelkan. Bagaimana saya bisa mengurangi masalah ini?

Lars
sumber
1
Anda dapat masuk ke pengaturan dan menggunakannya menggunakan biner alih-alih otomatis. Juga jika Anda menggunakan editor eksternal (seperti saya) pastikan tidak main-main dengan itu juga. Milik saya tidak pernah memberi saya masalah (saya menggunakan programmer notepad alias pnotepad)
Jadi dimana Lars? Memukul dan membelah.
ejbytes

Jawaban:

10

Saya akan mengatakan bahwa komentar yang ditinggalkan oleh acidzombie24 adalah saran terbaik. Secara pribadi saya belum menemukan program FTP yang lebih baik daripada WinSCP. Saya sarankan Anda mengubah pengaturan Anda untuk mentransfer menggunakan Binary, dan menggunakan editor seperti NP ++ daripada editor in-house.

Berikut beberapa tangkapan layar:

Transfer Biner

Editor

Merlin
sumber
Menambah jawaban Merlin, saya memperbaikinya dengan mengubah preferensi Transfer dari Binary ke Otomatis.
desbest
1
selain itu Anda perlu memastikan bahwa mode "teks" tidak dipaksakan pada editor eksternal Anda. Pergi ke Editor, klik editor Anda, klik edit ... lalu pastikan "Paksa mode transfer teks" tidak dicentang
Vigrond
4

Versi redsed dari WinSCP FAQ Mengapa baris file teks salah setelah file ditransfer atau diedit?

Lihat khususnya bagian Masalah yang Diketahui .


Setelah mentransfer atau mengedit file, mungkin saja terjadi jeda baris yang salah, yang mungkin bermanifestasi sebagai:

  • Jeda baris hilang. Sepertinya jika seluruh isi file berada pada satu baris.
  • Jeda baris digandakan. Sepertinya ada garis kosong tambahan di antara setiap baris.
  • Ada simbol / karakter aneh di akhir setiap baris.

Format File Teks

Platform yang berbeda (sistem operasi) menggunakan format file teks yang berbeda. Format yang paling umum adalah format Unix dan Windows. Perbedaan utama adalah bahwa karakter atau urutan karakter yang berbeda digunakan untuk menandakan akhir suatu garis. Pada Unix, ini karakter LF ( \n, 0Aatau 10 dalam desimal). Pada Windows, ini adalah urutan dua karakter, CR dan LF ( \r+ \n, 0D+ 0Aatau 13 + 10 dalam desimal).

Sementara banyak aplikasi dan sistem saat ini dapat bekerja dengan kedua format, beberapa memerlukan format tertentu. Saat menyajikan file dalam format lain, mereka gagal menampilkannya dengan benar, seperti dijelaskan di atas.

Mode Transfer Teks / ASCII

Untuk alasan ini, klien dan server transfer file mendukung mode transfer teks / ASCII . Saat mentransfer file dalam mode ini, file akan (idealnya) dikonversi dari format asli ke sistem sumber, ke format asli ke sistem target. Misalnya, ketika mengunggah file teks menggunakan mode teks dari sistem Windows ke Unix, ujung-ujung file bisa dikonversi dari CR + LF ke LF.

WinSCP secara default menggunakan mode transfer biner untuk semua file. Pelajari cara mengonfigurasinya untuk menggunakan mode transfer teks / ASCII . Anda mungkin juga perlu mengkonfigurasi format file teks sisi server yang benar .

Sebaliknya, ketika Anda ingin memaksa WinSCP untuk menggunakan mode biner, bahkan ketika mengedit file dalam editor teks, Anda harus menggunakan editor teks eksternal (editor internal WinSCP tidak mendukung format file Unix) dan mengkonfigurasi WinSCP untuk tidak memaksa mode teks untuk file yang diedit . Pastikan juga editor teks eksternal Anda menyimpan file dalam format yang Anda butuhkan (Sebagian besar editor teks saat ini mendukung format file teks yang berbeda, bukan hanya format asli ke platform yang dijalankan oleh editor).

Masalah yang Diketahui dengan Mode Transfer

  • Server FTP Pure-FTPd: Saat mengunduh file dengan Windows line-endings (CR + LF) dalam mode teks / ASCII, server mengganti LF dengan CR + LF, menghasilkan CR + CR + LF yang salah. Saat membuka file seperti itu di editor Internal WinSCP, editor menafsirkan urutan sebagai dua ujung baris (CR dan CR + LF) menghasilkan baris kosong setelah setiap baris konten. Ketika file disimpan, editor internal menyimpan dua ujung jalur Windows CR + LF dan CR + LF. Saat diunggah, mereka dapat dikonversi menjadi dua LF. Solusinya adalah menggunakan editor eksternal dan pastikan WinSCP tidak memaksa mode teks untuk file yang diedit .

Debugging Konversi File Teks

Jika mengaktifkan (atau menonaktifkan) mode transfer teks / ASCII tidak membantu masalah dan file yang Anda transfer / edit masih dianggap salah oleh sistem target, Anda perlu mengetahui pada langkah apa file dikonversi secara tidak benar (atau belum dikonversi).

Untuk mendeteksi ujung baris yang digunakan oleh file di Windows, gunakan perintah berikut pada konsol PowerShell untuk menampilkan hex dump dari 100 karakter pertama file yang diberikan ( example.txt):

Get-Content -Encoding Byte -TotalCount 100 example.txt |% {Write-Host ("{0:x2} " -f $_) -NoNewline}; Write-Host

Untuk file dengan konten berikut dalam format Windows

One
Two

ini menampilkan:

4f 6e 65 0d 0a 54 77 6f 0d 0a

Perhatikan dua urutan 0d 0a(CR + LF) yang menunjukkan format Windows.

Untuk mendeteksi akhir baris yang digunakan oleh file di sistem Unix / Linux gunakan perintah:

xxd example.txt | head

(Alternatifnya adalah hexdump example.txt | headatau od example.txt | head.)

Untuk file yang sama seperti di atas, hanya dalam format Unix, ini menampilkan:

0000000: 4f6e 650a 5477 6f0a                      One.Two.

Perhatikan karakter 0a(LF) yang menunjukkan format Unix.

Jika Anda tidak memiliki akses shell ke sistem jarak jauh, unduh file menggunakan pengkodean biner dan gunakan perintah PowerShell pada salinan identik biner lokal.

Gunakan teknik ini untuk mendeteksi, format apa yang dimiliki file sumber dan tujuan. Saat mengedit file, deteksi juga format salinan sementara lokal dari file yang diedit sebagaimana disimpan oleh editor. Lihat preferensi untuk lokasi salinan sementara .

Meminta Dukungan

Ketika hal di atas tidak membantu Anda memahami masalah dan Anda memutuskan untuk mencari dukungan lebih lanjut, sertakan semua temuan Anda, termasuk salinan file sumber dan tujuan. Saat mengedit file, sertakan juga salinan sementara lokal yang disimpan oleh editor. Kompres secara ideal (ZIP) file untuk menghindari browser Anda mengubah format file, ketika melampirkan file untuk mendukung permintaan.


(Saya penulis WinSCP)

Martin Prikryl
sumber
0

=== SOLUSI Satunya Saya ===

Metode1:

-Buka file (dengan Notepad yaitu ++), buka jendela "Cari dan Ganti" [Ctrl + F] (centang "Diperpanjang" di bawah "Mode Pencarian"), lalu ketik \ r \ n di baris pertama, dan \ n di jendela kedua dan klik "Ganti semua" dan Simpan.

Metode2:

-dalam " Preferensi> Transer> Default " pilih " Otomatis (Mode Transfer) ";
-Kemudian di jendela " Teks ", atur kondisi seperti itu (tetapi saya belum mengujinya dengan baik): masukkan deskripsi gambar di sini

jadi, sekarang masalah Anda dapat diperbaiki. banyak orang memiliki masalah ini, karena baris baru dihapus secara default (dalam beberapa kasus) oleh WINSCP ..

T.Todua
sumber
Metode Sederhana 1: Tekanalt + e,e,u
Amit Naidu
0

Tidak ada lagi garis ganda di sini. Solusi saya adalah hapus centang "Paksa mode transfer teks untuk file di editor eksternal" di preferensi editor.

knalle
sumber