Вы же понимаете, что никто не может знать, что Вы там пытаетесь прочесть(какой формат, кодировку и тд)? https://codepen.io/matt-west/full/KjEHg
Сей API прекрасно работает. Ищите ошибку на своей стороне.
iconv с багами, используйте mbstring.
А вместо перекодировщика Лебедева рекомендую https://2cyr.com/decode/
Ну и конечно же работать со строками как с байтами, еще стоит обратить внимание на настройки кодоровки веб сервера, чтобы он там не поломал ничего, если передаёте кюданные как строку. Как костыль можно упаковать, например в base64 а на сервере распаковать:) либо передавать как ascii js умеет такое.