Daten und Tabellen · CSV Reiniger
RFC 4180 Erklärt: Das, was CSV einem offiziellen Standard am nächsten kommt
· Hintergrund
csv rfc-4180 Datenformate
CSV existierte jahrzehntelang, bevor es jemand niederschrieb. In diesem Beitrag geht es um RFC 4180, was darin eigentlich über Trennzeichen, Anführungszeichen, Zeilenenden und Überschriften steht und warum es in realen Dateien immer noch ignoriert wird.
Zwei „gültige“ CSV-Dateien, die kein einzelner Parser richtig liest – warum das Format jahrzehntelang ohne Standard wuchs
Zwei Dateien können beide die Erweiterung .csv tragen, während eine Datei Semikolons und eine andere Tabulatoren verwendet und Anführungszeichen jeweils unterschiedlich anwendet. Ein Parser muss einen Dialekt kennen, bevor Satzzeichen zu einer Struktur werden. ToolAcre beginnt mit vier Kandidaten und bewertet analysierte Beispielformen, anstatt der Erweiterung zu vertrauen.
Diese Flexibilität erklärt, warum „gültig CSV“ oft eine unvollständige Beschreibung ist. Der Reiniger kann häufige Abweichungen akzeptieren und dann ein konsistentes Ergebnis erzielen. Sein Verhalten wird durch Konfiguration und Tests definiert, was einen nützlicheren Vertrag ergibt, als wenn man davon ausgeht, dass jeder Hersteller ein Memo perfekt befolgt.
Was RFC 4180 ist – ein Informationsmemo von 2005, das die gängige Praxis dokumentiert, kein verbindlicher Standard
Das Repository nennt wiederholt RFC 4180 als Ausgabekonvention, es ist jedoch keine Quelle für historische Behauptungen über das Datum oder den rechtlichen Status des Memos. Dieser Artikel konzentriert sich daher auf die Regeln, die durch die Implementierung verkörpert werden: Datensatzenden, Anführungszeichen, Header-Breite und Umgang mit Trennzeichen.
Wenn die Geschichte externer Standards von Bedeutung ist, zitieren Sie die Primärveröffentlichung separat. Für die Verwendung von ToolAcre sind die relevanten Beweise lokal: Der Code verwendet standardmäßig CRLF, setzt Strukturzeichen in Anführungszeichen, verdoppelt innere Anführungszeichen und meldet eine Zeile, deren Breite vom Header abweicht.
Repository-Beweise verwenden RFC 4180 als Zielkonvention; Der Veröffentlichungsverlauf liegt außerhalb des Quellsatzes
Das konfigurierte Ziel beschreibt eine durch Kommas getrennte Ausgabe, CRLF-Zeilenenden, ein optionales Header-Konzept und rechteckige Zeilen. Auf der Versandroute ist die erste Zeile in der Praxis nicht optional: Sie wird immer als Kopfzeile verwendet. Eine Datei ohne Header verliert ihren ersten Datensatz für diese Rolle.
Eine unregelmäßige Eingabe führt nicht zur Ablehnung. Verkürzte Zeilen werden mit leeren Zellen aufgefüllt; Lange Zeilen enthalten Extras und beide erhalten zeilennummerierte Warnungen. Der Serialisierer schreibt jede beibehaltene Zeile, sodass „saubere Ausgabe“ nicht bedeutet, dass das Programm erraten hat, wie strukturelle Unstimmigkeiten behoben werden können.
Zitieren gemäß Memo – wann Felder in Anführungszeichen gesetzt werden müssen und wie ein wörtliches doppeltes Anführungszeichen verdoppelt wird
Ein Feld muss in Anführungszeichen gesetzt werden, wenn es das gewählte Trennzeichen, ein Anführungszeichen oder ein Datensatzendezeichen enthält. ToolAcre setzt außerdem führende oder nachgestellte Leerzeichen in Anführungszeichen, damit ein anderer Parser sie nicht stillschweigend kürzt. Innerhalb eines Felds mit Anführungszeichen wird jedes literale doppelte Anführungszeichen zu zwei doppelten Anführungszeichen.
Der Schalter „Jedes Feld zitieren“ fordert einen einheitlichen Stil; andernfalls wird die Ausgabe in minimale Anführungszeichen gesetzt. Redundante Quellzitate verschwinden möglicherweise, während die analysierten Werte gleich bleiben. Diese Normalisierung wird erwartet und ist der Grund, warum Tests die wiederhergestellte Tabelle sowie die genaue Ausgabe für ausgewählte Beispiele vergleichen.
Der Medientyp text/csv – die optionalen Header- und Zeichensatzparameter und warum sie selten mit einer Datei auf der Festplatte übertragen werden
Eine Datei auf der Festplatte kommt selten mit angehängten Medientypparametern an. ToolAcre liest keinen `header`- oder `charset`-Parameter aus der ausgewählten Datei. Es basiert auf seinem Routenvertrag: UTF-8-Text, einem Header der ersten Zeile und unterstützter Trennzeichenerkennung oder manueller Auswahl.
Der optionale BOM-Exportschalter schreibt U+FEFF vor den ersten Header. Dies kann einer Tabellenkalkulation helfen, UTF-8 zu erkennen, aber die Konfiguration warnt davor, dass der strikte Skript- oder Datenbankimport unterbrochen werden kann, da die Markierung mit dem Vornamen verbunden wird, wenn sie nicht entfernt wird. Lassen Sie es weg, es sei denn, der Verbraucher verlangt es.
Wo die Welt auseinander geht – Semikolons, LF-Zeilenenden, unregelmäßige Zeilen und unbeschriftete Kodierungen, und warum das Memo nichts davon toleriert
Echte Eingaben können Semikolon, Tabulator oder Pipe, LF oder einzelnes CR, ungerade Zeilen und eine führende UTF-8 Stückliste verwenden. Der Parser akzeptiert absichtlich alle diese Zeilenenden und Trennzeichenkandidaten. Es „duldet“ unregelmäßige Reihen nicht stillschweigend; Es speichert Daten und fügt eine Warnung hinzu.
Ein nicht geschlossenes Angebot ist ein weiterer akzeptierter, aber gemeldeter Zustand. Alles nach dem Eröffnungszitat wird zu einem Feld, da keine eindeutige Schlussgrenze existiert. Korrigieren Sie diese Quelle, bevor Sie dem Export vertrauen. Beim permissiven Parsen handelt es sich um eine Aufbewahrungsstrategie und nicht um die Zertifizierung, dass die Eingabe konform war.
ToolAcre akzeptiert mehrere reale Abweichungen und meldet unregelmäßige Zeilen, anstatt sie abzulehnen
Hier gibt es keine Regel, die Zellen numerische, boolesche oder Nulltypen zuweist. Der Parser gibt Zeichenfolgen zurück und der JSON-Konverter behält sie als Zeichenfolgen bei. Semantische Konventionen müssen zwischen Sender und Empfänger vereinbart werden, einschließlich der Frage, ob Leertext fehlt und ob eine Ziffernfolge ein Identifikator ist.
Die Formelinjektionssicherheit ist eine Exportrichtlinie, die über der CSV-Syntax liegt. Wenn diese Option aktiviert ist, erhalten riskante Hauptzeichen mit Ausnahme normaler numerischer Formen ein Apostroph. Das verändert bewusst die Werte für die Sicherheit von Tabellenkalkulationen; Es ist nicht Teil des Anführungszeichen-Escapes oder eines allgemeinen Typsystems.
Streben Sie eine Ausgabe im RFC-Stil an, auch wenn Eingaben diese ignorieren – wie der ToolAcre CSV Cleaner Dateien in Richtung konsistenter Trennzeichen und Anführungszeichen repariert
Streben Sie eine vorhersehbare Ausgabe an, auch wenn der Quelldialekt variiert. Nach dem Parsen und Beheben von Warnungen gibt ToolAcre CRLF-Datensätze und Standard-Escapezeichen in doppelten Anführungszeichen aus. Bleibt das erkannte Trennzeichen Semikolon oder Tabulator, behält der Download dieses Trennzeichen bei, anstatt immer ein Komma zu erzwingen.
Wählen Sie das Komma manuell aus, wenn ein empfangender Vertrag eine durch Kommas getrennte Ausgabe erfordert, und überprüfen Sie das Steuerelement, da es das tatsächlich verwendete Trennzeichen anzeigt. Konsistenz ergibt sich aus einer expliziten Auswahl und einer überprüften Zeilenform, nicht allein aus der Erweiterung CSV.