Задать вопрос
dollar
@dollar
Делай добро и бросай его в воду.

Как декодировать строку в кодировке Windows-1251 в UTF8?

Строка загружена по HTTP, но имеет кодировку Windows-1251, не смотря даже на то, что
Content-Type: text/plain; charset=utf-8
В результате со стороны JS она выглядит как-то так:
"������� ���� �� ���� �"
Как её можно привести к нормальной кодировке?
TextDecoder не очень подходит, т.к. требует разбить строку на символы.
Но строка занимает 14 мегабайт.
Нужен какой-то наиболее быстрый способ, который не нагружает процессор.

UPD: Перекодировать уже полученный текст невозможно, т.к. там символы-заглушки. Нужно именно правильно загрузить текст.
  • Вопрос задан
  • 2771 просмотр
Подписаться 3 Средний 5 комментариев
Решения вопроса 2
dollar
@dollar Автор вопроса
Делай добро и бросай его в воду.
Ещё один вариант нашёл - подмена кодировки ответа.
xhr.open("GET", url, true);
xhr.overrideMimeType('text/plain; charset=windows-1251');
xhr.send();
Ответ написан
AngReload
@AngReload
Кратко о себе
const reader = new FileReader()
reader.addEventListener("loadend", function() {
  console.log(reader.result)
})
fetch("https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv")
  .then(response => response.blob())
  .then(blob => reader.readAsText(blob, "windows-1251"))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
iconv-lite, например.
Но вообще это ошибка на стороне сервера, и логичнее было бы исправить кодировку там.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы