Stoppen Sie, dass Filezilla leere Zeilen in Textdateien einfügt

1367
Steve

Oft lädt FileZilla von verschiedenen Remote-Hosts eine .cssoder eine .phpDatei herunter und fügt zwischen den vorhandenen Zeilen Leerzeilen ein. Dadurch werden schöne Formatierungen zerstört.

PC = Windows 10 Pro 64-Bit.

Wie kann ich das verhindern?

0
Es sieht aus wie ein Konflikt mit der Übersetzung der Zeilenenden. Siehe [this] (https://wiki.filezilla-project.org/Data_Type). Was ist dein System? Können Sie dem System des Hosts, den Sie herunterladen, entnehmen? Prüfen Sie (z. B. mit einem Hex-Editor), welche Zeichen sich am Ende der Zeile der problematischen Datei an Ihrer Seite befinden. Versuchen Sie, eine Datei mit dem "binären" Übertragungsmodus herunterzuladen, um sicherzustellen, dass die leeren Zeilen nicht in der Quelldatei enthalten sind. Kamil Maciorowski vor 7 Jahren 2

2 Antworten auf die Frage

7
Kamil Maciorowski

Meine Antwort vs. OPs Antwort

Ich schreibe diese Antwort, wenn die Lösung bereits von OP gefunden wurde. Das Ziel meiner Antwort ist zu erklären, was das Problem war, um zukünftigen Benutzern mit ähnlichen Problemen zu helfen. Die vorhandene Antwort gibt eine Lösung, aber keine Einsicht. Das ist die Antwort:

Die Lösung bestand darin, den Übertragungstyp von Auto auf Binär zu ändern.

Übertragen-Menü> Übertragungstyp> Binär


Problemhintergrund: ASCII vs. binär

Wie ich (in meinem Kommentar zu der Frage) vermutete, war das Problem ein Konflikt mit der Übersetzung der Zeilenenden. Das FileZilla Wiki behandelt das Thema. Dies sind die relevanten Fragmente (alle folgenden Zitate stammen von dort, einige Phrasen werden von mir zusätzlich hervorgehoben ):

Dateien können auf verschiedene Weise zwischen einem FTP-Client und einem Server übertragen werden. Die FTP-Spezifikation (RFC 959) nennt sie "Datentyp" (...)

Die verschiedenen Datentypen sind:

  • ASCII
  • binär
  • (...)

ASCII-Typ wird zum Übertragen von Textdateien verwendet. Das Problem bei Textdateien ist, dass verschiedene Plattformen unterschiedliche Arten von Zeilenenden haben. Microsoft Windows verwendet beispielsweise ein CR + LF-Paar (Wagenrücklauf und Zeilenvorschub), während Unix-Systeme (einschließlich Linux und MacOS X) nur LF und herkömmliche MacOS-Systeme (MacOS 9 oder älter) nur CR verwenden. Der Zweck des ASCII-Typs besteht darin, sicherzustellen, dass die Zeilenenden richtig an der rechten Seite der Plattform geändert werden. Gemäß der FTP-Spezifikation werden ASCII-Dateien immer mit einem CR + LF-Paar als Zeilenende übertragen.

Falls die Datei vom Client zum Server übertragen wird, muss der Client sicherstellen, dass CR + LF verwendet wird. (...)

Das Gleiche passiert, wenn eine Datei vom Server auf den Client heruntergeladen wird: Der Server stellt beim Senden der Datei sicher, dass die Zeilenenden CR + LF sind, und der Client entfernt dann alles, was nicht als Zeilenende auf seiner Plattform benötigt wird.

(...)

Verglichen mit dem ASCII-Typ ist der binäre Typ der einfachere: Die Datei wird nur so übertragen, wie sie ist, und es wird keine Zeilenendeübersetzung durchgeführt.


Was ist passiert?

Eines der Beispiele, wenn etwas schief geht, stimmt mit dem Fall des OP überein. Ich denke, das ist was passiert ist:

Eine Windows-Textdatei (CR + LF) wurde binär auf einen Unix-basierten FTP-Server hochgeladen. Wenn diese Datei in ASCII heruntergeladen wird, übersetzt der FTP-Server LF in CR + LF, sodass die Zeilenenden der CR + LF-Zeilen in CR + CR + LF konvertiert werden. FileZilla unter Windows erwartet, dass die Datei bereits CR + LF-Zeilencodierung verwendet (per FTP-Spezifikation), sodass keine weitere Übersetzung erfolgt. Abhängig vom verwendeten Texteditor können Zeilen jetzt durch eine zusätzliche leere Zeile getrennt werden.


Lösung

Die Lösung des OP besteht darin, den Transfer-Typ von Auto zu Binär zu ändern, beginnend mit dem Transfer- Menü. Der Artikel bietet auch andere Möglichkeiten, dies zu ändern:

Sie können den Übertragungsdatentyp auf drei Arten mit FileZilla ändern:

  • In den Einstellungen von FileZilla
  • Im Hauptmenü unter Transfer -> Transferart
  • Klicken Sie mit der rechten Maustaste auf das Datentypkennzeichen in der Statusleiste von FileZilla.

Herstellung von binären die Standardoption in Windows, um die Situation führen kann, wenn .cssoder .phpoder andere Textdatei von Nicht-Windows - System heruntergeladen wird mit einzelnen LF oder CR anstelle von Windows-spezifischer CR + LF gespeichert werden. Es kann kein Problem sein, wie in einem anderen Fragment erläutert:

Wenn Sie sich nicht sicher sind, was Sie verwenden sollen, sollten Sie immer den binären Typ wählen. Heutzutage können fast alle (guten) Texteditoren die drei möglichen Zeilenenden verarbeiten, und andere Textdateien wie Skriptsprachen wie Perl oder PHP sowie XML-Dateien arbeiten (fast) immer mit jedem Zeilenende.

Diese Lösung kann in vielen Fällen die beste sein, da die Übertragungsart immer geändert werden kann.


Alternative Lösung

Der Fragentitel legt nahe, dass zusätzliche Zeilen von der FileZilla des OP erstellt wurden. Es stimmt nicht, es war nichts falsch mit der FileZilla-Konfiguration von OP. Dieses Problem tritt auf einer Serverseite auf, wo Textdateien vorhanden sind, deren Zeilenenden das Server-Betriebssystem nicht übereinstimmen. Die oben genannte Lösung ist nur eine clientseitige Lösung für das serverseitige Problem .

Die alternative Lösung besteht darin, die Dateien (ihre Zeilenenden) auf der Serverseite festzulegen, sodass die ASCII-Übertragung so funktioniert, wie sie eigentlich sein sollte. Dies ist offensichtlich das Richtige und kann als die beste Lösung bezeichnet werden - in gewissem Sinne: weil es sich um die Wurzel des Problems handelt. Berücksichtigen Sie diese Lösung, wenn Sie den Server verwalten oder wenn Sie sich an den Administrator wenden können oder wenn Sie die Berechtigung zum Überschreiben der falsch formatierten Datei haben. Davon profitieren auch andere Benutzer.

Auch wenn Sie sich an den Administrator wenden, ist es meiner Meinung nach immer schneller, den Übertragungstyp zu ändern und die gewünschte Datei herunterzuladen, anstatt auf die Änderungen auf der Serverseite zu warten.

Es gibt eine zusätzliche Lösung: Korrigieren Sie die Zeilenenden auf dem Server. Wenn es sich um einen Linux-Server handelt, ändern Sie die Zeilenenden in LF. Auf diese Weise sollte der ASCII-Modus alles richtig übersetzen. syntonym vor 7 Jahren 1
@syntonym Vielen Dank, dass Sie darauf hingewiesen haben. Ich habe meine Antwort aktualisiert. Kamil Maciorowski vor 7 Jahren 0
0
Steve

Die Lösung bestand darin, den Übertragungstyp von Auto auf Binär zu ändern.

Übertragen-Menü> Übertragungstyp> Binär