Codec-Referenz · 0.2.0

Windows-1252 ist kein Detail, das warten kann.

Eine Buchungsstapel-Datei besteht aus Bytes, nicht aus Text. Umlaute überstehen das; ein türkisches punktloses i nicht. Ein unbedachter UTF-8-Schritt nach dem Export macht alles zunichte.

Der Byte-Vertrag

Codec-Konstanten, die alle Exporter teilen
EigenschaftWert
Zeichenkodierungwindows-1252
Satztrenner\r\n (CRLF)
Feldtrenner;
Anführungszeichen"
Maskiertes Anführungszeichen""

Wann ein Wert gequotet wird

Zwei unabhängige Regeln entscheiden über das Quoting, beide werden angewendet.

  • Amtliche Textspalten werden immer gequotet, auch wenn sie leer sind. 84 der 125 Spalten in Version 13 sind Textspalten.
  • Jeder andere Wert wird nur gequotet, wenn es nötig ist — also wenn er ein Semikolon oder ein Anführungszeichen enthält.
  • Ein enthaltenes Anführungszeichen wird verdoppelt, nie mit Backslash maskiert.

Welche Zeichen überstehen

Windows-1252 ist eine Ein-Byte-Kodierung und kann höchstens 256 Zeichen darstellen. Deutscher Text liegt bequem darin, viel anderer Text nicht.

Kodierbar — werden unverändert geschrieben

ä ö ü ß Ä Ö Ü € § µ ° á é í ó ú ñ ç å ø æ š ž

Nicht kodierbar — abgelehnt als UNMAPPABLE_CHARACTER

ı ğ ş ł ą č ř ő ū 日 😀

Ein Wert mit einem nicht kodierbaren Zeichen wird abgelehnt statt still durch ein Fragezeichen ersetzt, weil ein beschädigter Buchungstext später schwerer auffällt als ein jetzt fehlgeschlagener Export. Wenn die Quelldaten solche Zeichen enthalten können, sollte in der eigenen Zuordnung bewusst transliteriert werden.

Steuerzeichen

Steuer-, Zeilen- und Absatztrennzeichen werden an jeder Stelle einer Zelle abgelehnt und als INVALID_FORMAT gemeldet. Ein Zeilenumbruch in einem Buchungstext würde sonst eine Buchungszeile in zwei unbrauchbare Sätze zerlegen.

Wie Exporte nach dem Schreiben beschädigt werden

Die Bibliothek kontrolliert die Bytes, die sie schreibt. Alles danach liegt in eigener Verantwortung.

  • Ein Texteditor, der die Datei öffnet und als UTF-8 zurückspeichert — jeder Umlaut wird zu zwei Bytes und die Datei ist ungültig.
  • Ein Übertragungs- oder Archivierungsschritt im Textmodus, der CRLF zu LF umschreibt.
  • Das Zurücklesen der Datei mit dem Plattform-Standardzeichensatz statt Windows-1252.
  • Eine Template- oder Logging-Schicht, die die Ausgabe auf Unicode NFD normalisiert und Umlaute in Grundbuchstabe plus kombinierendes Zeichen zerlegt.
Die Bytes prüfen, nicht die Darstellung

Eine Datei, die im Editor richtig aussieht, kann bereits defekt sein. Bytelänge und Kodierung prüfen und die erzeugte Datei zwischen Export und Import unangetastet lassen.