diff --git a/app/services/sec_http_client.py b/app/services/sec_http_client.py index 88b15fc..967472c 100644 --- a/app/services/sec_http_client.py +++ b/app/services/sec_http_client.py @@ -393,7 +393,16 @@ class SECHttpClient: raise ValueError( f"Response exceeded {max_bytes} byte limit" ) - text = raw.decode(resp.get_encoding() or "utf-8", errors="replace") + # Parse charset from Content-Type header directly; + # resp.get_encoding() needs resp.read() body which we didn't call. + ctype_hdr = resp.headers.get("Content-Type", "") + encoding = "utf-8" + for part in ctype_hdr.split(";"): + part = part.strip() + if part.lower().startswith("charset="): + encoding = part[8:].strip().strip('"') or "utf-8" + break + text = raw.decode(encoding, errors="replace") else: text = await resp.text() if _is_sec_block_page(text):