IE - ответ json Angular содержит символ юникода, который удаляет дополнительные символы. Неверный JSON - PullRequest
0 голосов
/ 07 января 2019

У меня есть http-ответ, имя которого содержит символ Unicode (например, Мюллер). В IE11 я получаю сообщение об ошибке «Неверный символ», потому что кажется, что в IE11 весь HTTP-ответ читается как строка в угловом HTTP-ответе, и он пытается проанализировать эту строку в JSON (вместо уже в JSON). формат). Но в строке JSON это выглядит примерно так: ...,\"lastName\":\"M�}],\"id\":1,...

Проблема в том, что часть фамилии была удалена, и теперь в значении lastName отсутствует закрывающая кавычка. Я не возражаю против того, что он показывает знак вопроса с бриллиантом, это просто полностью нарушает ответ.

В chrome он работает нормально, поскольку данные фактически возвращаются в виде объекта JSON, в отличие от IE11, где они возвращаются в виде строки, а затем пытается преобразовать в JSON в функциях ответа преобразования по умолчанию.

Запрос в формате application / json charset: utf-8. Ответ в формате application / json.

Кто-нибудь знает, что не так?

Редактировать: в теле ответа IE11 он отображается корректно как "Мюллер" в формате JSON.

Редактировать: похоже, что он съел первые 5 символов после ü при возврате ответа. (например, Mülleraa будет выглядеть как ...\"M�a\"..., где закрывающая цитата возвращается с дополнительным символом 'a')

1 Ответ

0 голосов
/ 08 января 2019

В запросе добавьте:

headers: {
  "Accept": "application/json;charset=utf-8",
  "Accept-Charset":"charset=utf-8"
},
...