## Problem

Parsing ACH files from the Fed with moov-io/ach's `Reader` worked for ASCII files, but files containing UTF-8 names (e.g. `John DèS`) came out garbled: `è` showed up as `Ã¨`. The reporter's analysis: the charset detection library only inspects the first 1024 bytes of the file. If those are all plain ASCII (0-7F), it decides the file is Windows-1252 and decodes the UTF-8 bytes as Latin-1, even when real UTF-8 characters appear later in the file.

## Verified fix

The root cause was the encoding sniffing: `golang.org/x/net/html/charset` looks at only the first 1024 bytes, so a file whose first 1024 bytes are pure ASCII gets decoded as Windows-1252 even if it contains UTF-8 later. The maintainer fixed this in PR #1574, released in v1.46.0, and the reporter confirmed 1.46.0 fixed their issue.

If you cant upgrade: the reporter found that converting the UTF-8 content to Windows-1252 before handing it to `ach.NewReader()` parses correctly, since the reader's charset handling then round-trips it back properly. But upgrading to v1.46.0+ is the real fix.

Source: https://github.com/moov-io/ach/issues/1564