@mi_ka

Fetch(). Ответ с Unicode Character. Как «декодировать»?

Здравствуйте.

Делаю запрос к серверу (не мой) используя fetch().
Вот так вот получаю ответ:
await response.text();
В ответе содержатся: вкрапления jQuery + html верстка + полезная информация о фильме. В ответе (латиница и кириллица, которая представлена символами Unicode Character. Небольшой кусочек \u0417\u0430\u043a\u0440\u044b\u0442\u044c)

присваиваю ответ переменной, чтобы распарсить информацию с помощью jQuery и здесь начинаются проблемы, потому что js не воспринимает символы \uXXX.

пробовал
decodeURIComponent(await response.text());
JSON.parse(await response.text());

также получал ответ как response.arrayBuffer() и далее использовал TextDecoder(), но всё безуспешно.

при этом, если вручную присвоить переменной значение "\u0417\u0430\u043a\u0440\u044b\u0442\u044c" и вывести эту переменную через alert(), то все нормально, текст отображается корректно ("Закрыть").

подозреваю что проблема в том, как fetch() предоставляет ответ.
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ответы на вопрос 2
@zkrvndm
Софт для автоматизации
Посмотрите в какой кодировке сервер отдает вам ответ, для этого откройте консоль браузера, перейдите во вкладку Network и сделайте скриншот полученных заголовков, после чего скиньте сюда.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для JSON.parse надо такую строку обрамлять двойными кавычками, чтобы сформировать правильный JSON.
const encoded = '\u0417\u0430\u043a\u0440\u044b\u0442\u044c';
const decoded = JSON.parse('"' + encoded + '"');
console.log(decoded); // Закрыть
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы