Frage

Gibt es in Ihrem Software-Zeilenumbrüche aus anderen Systemen umgehen?

Linux/BSD    linefeed         ^J    10     x0A
Windows/IBM  return linefeed  ^M^J  13 10  x0D x0A
old Macs     return           ^M    13     x0D
others?

Aus Gründen des Wahnsinns, ich werde die Linux-Version der Newline-Zeichen in meinen Textdateien mit der Verwendung. Aber, wenn ich meine Textdateien bringen über Windows zu sagen, einige Programme nicht spielen gut mit Zeilenumbrüche in meinem Text. Wie würden Sie damit umgehen?

War es hilfreich?

Lösung

Wie sie sagen, streng sein in dem, was Sie schreiben und liberal, was Sie lesen.

sollte Ihre Anwendung in der Lage sein, richtig zu arbeiten beiden Zeilenende zu lesen. Wenn Sie verwenden möchten Zeilenvorschübe und möglicherweise verärgert Windows-Benutzer, das ist in Ordnung.

Aber speichern für Notepad, die meisten Programme, die ich mit spielen scheinen mit beiden Methoden, glücklich zu sein.

(Und ich benutze Cygwin unter Windows, die einfach alles interessant macht)

Andere Tipps

Die Standard-Python-Distribution kommt mit zwei Befehlszeilenskripts (in Tools / Skripte) genannt crlf.py und lfcr.py, die zwischen Windows und Unix / Linux-Zeilenenden umwandeln können.

[Quelle]

In .NET werden neue Linien von Environment.NewLine bezeichnet, so dass der Rahmen ist so gestaltet, wie nehmen, was das neue Linie des Systems ist (CR + LF oder CR nur oder LF nur) zur Laufzeit zu verwenden. Natürlich ist dies in Mono letztlich nützlich.

Ich vermute, Sie werden feststellen, dass die meisten modernen Windows-Programme (mit der bemerkenswerten Ausnahme von Notepad) behandeln Newline-only just fine-Dateien. Doch mit Windows-Programmen generierten Dateien immer noch dazu neigen, crlf Endungen zu haben.

Die meiste Zeit werden die Zeilenende automatisch in einer plattformspezifischen Art und Weise durch die Laufzeitbibliothek behandelt werden. Zum Beispiel ist ein C-Programm, das eine Datei mit fopen(..., "r") öffnet wird die Linien in einer konsistenten Art und Weise (Zeilenvorschub nur) auf jeder Plattform unabhängig von den tatsächlichen Zeilenenden sehen.

Soweit ich weiß, es ist nur Notepad, die ein Problem mit Zeilenseparatoren hat. Praktisch immer anderes Stück Software in der Welt übernimmt eine dieser drei Arten von Trennzeichen, und auch die Möglichkeit andere. Leider ist Notepad der Herausgeber der erste Ort für die meisten Computer-Nutzer in diesen Tagen. Ich denke, es ist extrem unverantwortlich von Microsoft diese Situation zu lassen fortzusetzen. Ich habe noch nie mit Vista gespielt, aber ich glaube, das Problem immer noch besteht, wie es in XP der Fall ist. Jeder Körper weiß über die nächste Version?

Wie bereits gesagt, gibt es viele (ganz trivial) Wandler um, sollte die Notwendigkeit entstehen. Beachten Sie, wenn Sie die Übertragung mit FTP im ASCII-Modus tun, wird die Konvertierung automatisch tun ...

Tatsächlich Notepad ist das proéminent Programm ein Problem mit mit LF enden ...

Die nervigste ich sah sind Textdateien mit gemischten Zeilenende, erfolgten im Wesentlichen durch die Menschen auf Unix eine Windows-Datei bearbeiten oder Dienstprogramme Hinzufügen Sachen ohne das richtige Format zu überprüfen.

Um glücklich zu sein, folgt Empfehlung der Norm.

http://unicode.org/standard/reports/tr13/tr13- 5.html

Und bieten Optionen für Sonderfälle wie alte MacOS. Oder behandelt den Fall automatisch, wenn Sie sie zuverlässig erkennen können.

Ich empfehle Formatierung des Textes in Unix-Stil. Vergessen Sie Windows-Benutzer. Da keine Windows-Benutzer verwenden Klartext für Dokument oder Daten. Sie werden verärgert sein, wenn Sie Klartext übergeben. Sie erwarten, dass immer Word- oder Excel-Dokument. Auch verwenden sie einfache Textdatei, das einzige Problem, sie bekommen wird nur weirdly Text.

Aber Unix-Benutzer erleben ihre alle Werkzeuge nicht richtig funktionieren. Speziell für Unix, folgen Sie den Standard streng.

PS. Oh, wenn Ihre Windows-Benutzer ein Entwickler ist, formatieren Sie nur mit Text in Unix, und ihnen sagen, das ist die Datei von Unix.

Nicht sicher, was meinen Sie, wenn Sie ‚Deal‘ sagen mit, aber im Grunde kann man nur sagen, so etwas wie:

string convertLineBreaks(String line, String lineBreakYouWant) {
  replace all ^M^J or ^M or ^J in line with lineBreakYouWant

  return line
}

Edit:. Ich vermute, dass nach erneuter Lektüre Ihrer Frage, die Sie bedeuten, wie Sie mit anderen Völkern Programme sehen Sie beschäftigen, die nicht falsch umgehen kann (für das Zielsystem) Zeilenumbrüche

Ich würde vorschlagen, entweder 1) mit einem Programm, das Ihre Dateien über ein Skript umgehen kann oder 2) ausgeführt wird, der Zeilenumbrüche jeglicher Art findet und dann wandelt sie in welcher Art auch immer ist die richtige für Ihr System.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top