Test files › Structured data › bom-and-semicolons.csv
CSV with a UTF-8 BOM and semicolons
UTF-8 BOM, semicolon delimiters and comma decimal separators - the format Excel produces in most European locales.
↓ Download bom-and-semicolons.csv| Filename | bom-and-semicolons.csv |
| Format | CSV |
| Size | 124 bytes (124 bytes) |
| MIME type | text/csv; charset=utf-8 |
| SHA-256 | f011c1f7fd1b20aa993782865d5884ca6aa23089fabe5dc560b47c041bdf080a |
What this file catchesImporters hardcoded to comma delimiters, and the stray "" that appears before the first column header when the BOM is not stripped. Extremely common real-world support ticket.
Handle it in code
Each snippet below was run against this exact file with Python 3.14.4 and Node 24.15.0 when this page was built, and the output shown is what it printed.
Python
European Excel exports use semicolons and often a BOM. The utf-8-sig codec drops the BOM, and the Sniffer finds the delimiter instead of assuming a comma.
import csv
with open("bom-and-semicolons.csv", newline="", encoding="utf-8-sig") as f:
dialect = csv.Sniffer().sniff(f.read(4096), delimiters=",;\t")
f.seek(0)
rows = list(csv.reader(f, dialect))
print("delimiter:", repr(dialect.delimiter))
print("header:", rows[0])Run against this file, it prints: delimiter: ';'
header: ['id', 'name', 'betrag', 'datum']
Related guides and tools
Download & verify
curl -fsSL -o "bom-and-semicolons.csv" "https://files.hexaqa.com/csv/bom-and-semicolons.csv"
curl -fsSL "https://files.hexaqa.com/csv/bom-and-semicolons.csv" | sha256sum
# expect: f011c1f7fd1b20aa993782865d5884ca6aa23089fabe5dc560b47c041bdf080a