【问题标题】:IE - Angular's json response contains unicode character that removed additional characters. Invalid JSONIE - Angular 的 json 响应包含删除其他字符的 unicode 字符。无效的 JSON
【发布时间】:2019-01-07 18:58:32
【问题描述】:

我有一个名称包含 unicode 字符的 http 响应(例如 Müller)。 在 IE11 中,我收到一条错误消息,显示“无效字符”,因为在 IE11 中,似乎整个 http 响应被读取为 angular 的 http 响应中的字符串,并且它尝试将此字符串解析为 JSON(而不是已经在 J​​SON格式)。但在 JSON 字符串中,它看起来像这样: ...,\"lastName\":\"M�}],\"id\":1,...

问题是姓氏的一部分被剥离,现在 lastName 值缺少右引号。我不介意它显示菱形问号,它现在完全破坏了响应。

在 chrome 中它可以正常工作,因为数据实际上是作为 JSON 对象返回的,这与 IE11 不同,它作为字符串返回,然后尝试在默认的转换响应函数中转换为 JSON。

请求是 application/json charset: utf-8 格式。 响应为 application/json 格式。

有谁知道怎么回事?

编辑:在 IE11 的网络响应正文中,它以 JSON 格式正确显示为“Müller”。

编辑:它似乎在返回响应时占用了ü 之后的前 5 个字符。 (例如,Mülleraa 看起来像 ...\"M�a\"...,其中结束引号带有一个额外的 'a' 字符)

【问题讨论】:

  • >编辑:在 IE11 的网络响应正文中,它以 JSON 格式正确显示为“Müller”。 >编辑:它似乎在返回响应时吃掉了 ü 之后的前 5 个字符。 (例如,Mülleraa 看起来像 ...\"M�a\"... 其中结束引号带有一个额外的 'a' 字符)你的意思是在 IE11 的网络响应正文中,它显示了数据正确,当你尝试解析json字符串时,会显示invalid Character错误?
  • 我使用following code创建了一个示例,响应对象还包含“Mülleraa”,但它在IE浏览器(版本:11.17134.1.0)上运行良好,结果like this。那么,您能否像Minimal, Complete, and Verifiable example 一样发布足够的代码来重现该问题。

标签: angularjs internet-explorer unicode character-encoding httpresponse


【解决方案1】:

在您的请求中,添加:

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

【讨论】:

  • 我的请求需要在 application/json 中,但问题不在于 url,而是在 Angularjs 中读取 IE11 中的响应。
  • 试过了,还是一样的问题。
猜你喜欢
  • 2020-05-06
  • 1970-01-01
  • 2017-06-06
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多