A one-line fix for a CSV header error

A deliberately constructed Python example, not a customer case. These test results apply only to this fixture and the recorded environment.

The problem

A script reads an order CSV with Python's csv.DictReader. A UTF-8 byte order mark (BOM) becomes part of the first header, so looking up order_id raises KeyError.

Before: encoding="utf-8"
After:  encoding="utf-8-sig"

The change removes a leading BOM while still accepting ordinary UTF-8 input. Order IDs remain strings, including leading zeros. No deduplication, amount calculation, or business-field inference is added.

The same tests, before and after

Six identical regression tests, Python 3.12.14
VersionPassExpected errors
Original script42 BOM cases
Fixed script60

Coverage includes BOM and non-BOM files with LF or CRLF line endings, leading-zero IDs, header-only input, Chinese text, and quoted fields containing commas. The input fixture's hash is unchanged.

A focused troubleshooting deliverable

Scope and limits

Missing required headers, GBK files, malformed CSV, very large files, deployment, and security audits are outside this example. A real project needs a reproducible issue, authorized code, an agreed environment, and explicit acceptance tests. Not every issue can be reproduced or fixed within a small scope; no unconditional repair is promised.

Safe project discussion

Start with a general error description. Do not post private repositories, production passwords, API keys, or personal data. Any private data transfer, production access, deployment, or rollback plan needs separate agreement.

Related Python troubleshooting tutorial on YouTube (external link; no video is loaded on this site).