The byte contract
| Property | Value |
|---|---|
| Character encoding | windows-1252 |
| Record separator | \r\n (CRLF) |
| Field delimiter | ; |
| Quote character | " |
| Escaped quote | "" |
When a value is quoted
Two independent rules decide quoting, and both are applied.
- Official text columns are always quoted, even when empty. 84 of the 125 version 13 columns are text columns.
- Any other value is quoted only when it must be — that is, when it contains a semicolon or a quote character.
- An embedded quote is doubled, never backslash-escaped.
Which characters survive
Windows-1252 is a single-byte encoding, so it can represent at most 256 code points. German text is comfortably inside that range; a lot of other text is not.
Encodable — written unchanged
ä ö ü ß Ä Ö Ü € § µ ° á é í ó ú ñ ç å ø æ š ž
Not encodable — rejected as UNMAPPABLE_CHARACTER
ı ğ ş ł ą č ř ő ū 日 😀
A value containing an unencodable character is refused rather than silently replaced with a question mark, because a corrupted Buchungstext is harder to notice later than a failed export now. Transliterate deliberately in your own mapping if your source data can contain such characters.
Control characters
Control, line-separator and paragraph-separator characters are rejected anywhere in a cell, reported as INVALID_FORMAT. A newline inside a Buchungstext would otherwise split one booking row into two unusable records.
How exports get corrupted after they are written
The library controls the bytes it writes. Everything downstream of that is yours to protect.
- A text editor that opens the file and saves it back as UTF-8 — every umlaut becomes two bytes and the file is no longer valid.
- A transfer or archiving step configured for text mode that rewrites CRLF to LF.
- Reading the file back with the platform default charset instead of Windows-1252.
- A templating or logging layer that normalises the output to Unicode NFD, splitting umlauts into base letter plus combining mark.
A file that looks right in an editor may already be broken. Check the byte length and the encoding, and keep the generated file untouched between export and import.