JS - Проблема с кодировкой при загрузке файла через FileReader
Win10, приложение SAPUI5, файл гружу FileUploader'ом, читаю FileReader'ом.
При загрузке файла напрямую через бэк в SAP систему проблемы нет, бинарник читается-сохраняется. Кодировку распознаёт как "Кириллица (Windows)".
Но стоит передать файл через фронт - кодировка не читается корректно и выдает что-то такое:
"‰PNG\r\n\n���\rIHDR��y��‚\b���㞌���sRGB�®Îé��&#
вместо
‰PNG
IHDRy‚гћЊsRGB®ОйgAMA±Џ ьa pHYs%%IR$ряҐIDATx^мэ{°G~п‹ъњё±ЏOЬч8NЬ?ьџнЯ=з:boЗѕц‰ЩЗыбсЭѕЦЊЗћ°·Џз8мЩcПЊ $ЃДKHЂДKи-ђIH0B/=<сђB !HЂ!Ѓђxї(oі;{eWяЄWwZµzхъ|ѓO,єкWYYYХY•ЯОМъµ’Ь/~с чйѕПMцм/эЭ[ї| І»Дћ}‡МuќВ@8Жf КPe(‡2”CКЎ еP†r(C9”ЎКPe(‡2”CКЎ еP¦·КЎ±ЙіїґгЅнuќђO
Более того, если скопировать эту строку (корректную) из payload'а и вставить в окно браузера, получатся такие кракозябры.
(Не могу загрузить скриншот. Символьная последовательность как выше, но часть символов заменена такими квадратами. ? ? ?)
Код:
var reader = new FileReader();
reader.onload = function (e) {
var oMedia = e.currentTarget.result;
// var vContent = e.currentTarget.result.replace("data:" + file.type + ";base64,", "");
// var oMedia = vContent;
// var oMedia = btoa(vContent);
};
// reader.readAsDataURL(file);
// reader.readAsArrayBuffer(file);
// reader.readAsBinaryString(file);
// reader.readAsText(file, "windows-1251");
reader.readAsText(file);
Этот код выдаёт наиболее близкий к желаемому результат, почему-то не readAsArrayBuffer и не readAsBinaryString, а именно readAsText. Но всё равно часть символов распознать не может. Предполагаю, FileReader читает в UTF-8, а файл в Windows-1251 или подобной. Прямое указание кодировки не помогло, приходят другие кракозябры. Есть идеи, как это победить?