I too recommend file at help.mikrotik.com. The RFC for JSON requires UTF-8 formatting, so in that sense it’s a bug. And it is kinda double-whammy since you can’t use jq /etc. to fix the strings, since it’s fails on parsing… before you could even call jq expressions.
But the underlying issue, despite being Linux-based, is the default charset is Windows-1252 (Latin-1 / ISO 8859-1)… So the JSON from REST kinda follow this, odd, logic that strings are single-byte using Windows-1252 with only " double quotes escaped (AFAIK). Basically RouterOS does not deal with UTF-8 (or Unicode in general) ANYWHERE, so not just reading file from JSON/REST API that is the only issue here. So you’re JS/TS byte-reader seems like a reasonable workaround.
A better solution likely be the REST API has some method to get a file using application/octet-stream MIME-type as a binary transfer (over HTTP) and avoid the JSON entirely. Perhaps with some “Accept” / “Content-Type” header, or different/special URL for retrieving file via HTTP. Or perhaps supposing WebDAV for the RouterOS file system.