Ist es möglich / legal, CR / LF-Zeichen irgendwie in eine CSV-Datei zu kodieren?
(als Teil eines CSV-Standards?)
Wenn ja, wie soll ich CR / LF codieren?
Ist es möglich / legal, CR / LF-Zeichen irgendwie in eine CSV-Datei zu kodieren?
(als Teil eines CSV-Standards?)
Wenn ja, wie soll ich CR / LF codieren?
Antworten:
Ja, Sie müssen Anführungszeichen setzen:
"some value
over two lines",some other value
Aus diesem Dokument , dem allgemein anerkannten CSV-Standard:
Ein Feld, das eingebettete Zeilenumbrüche enthält, muss in doppelte Anführungszeichen gesetzt werden
Die häufigste Variante von CSV, die Excel-kompatibel ist, ermöglicht eingebettete Zeilenumbrüche, solange das Feld von doppelten Anführungszeichen umgeben ist.
foo,bar,"blah blah
more blah blah",baz
oder
foo,bar,"blah blah
more blah blah"
oder
"blah blah
more blah blah",baz
sind alle gültig. Dieser Mechanismus ermöglicht auch eingebettete Kommas.
Die Verwendung von Anführungszeichen um Textfelder ohne eingebettete neue Zeilen (oder Kommas) ist ebenfalls in Ordnung. Wenn der Text selbst ein doppeltes Anführungszeichen enthält, besteht der Mechanismus zum Entkommen darin, beispielsweise zwei zusammenzufügen.
foo,bar,"this person said ""blah blah
more blah blah""",baz
Das Schreiben eines CSV-Readers, der dies korrekt handhabt, kann schwierig sein (insbesondere, wenn Sie sich auf reguläre Ausdrücke verlassen).
Hier wurde ein Standard für CSV erwähnt. Es würde mich interessieren, mehr darüber zu erfahren - die einzigen Standards, die mir bekannt sind, sind
was auch immer Excel akzeptiert
der RFC unter www.rfc-editor.org/rfc/rfc4180.txt
Ich denke nicht, dass es Teil des Standards ist (wenn es überhaupt einen gibt), aber Sie könnten Standard-C-Escape verwenden, dh codieren \ r \ n.
Beachten Sie jedoch, dass Sie in diesem Fall auch das Escape-Zeichen codieren sollten - dh \ yield \ nach dem Decodieren.