【问题标题】:JSON.parse: unexpected character at line 1 column 1 of the JSON data in Firefox onlyJSON.parse:仅在 Firefox 中 JSON 数据的第 1 行第 1 列出现意外字符
【发布时间】:2016-05-25 22:44:30
【问题描述】:

我已经通过 PowerShell 创建了一个 JSON 文件并将其放在服务器上。

当我通过 $.getJSON 访问该 JOSN 文件时,它在 crome 和 IE 浏览器中运行良好,但是当我在 Firefox 中访问该 JSON 文件时,我得到了错误

JSON.parse:JSON 数据的第 1 行第 1 列出现意外字符

标题:

回应:

应该是什么问题以及如何在 Firefox 中解决?

【问题讨论】:

标签: javascript jquery json powershell firefox


【解决方案1】:

您说过服务器使用Content-Type: text/plain 发回该JSON。数据似乎采用 UTF-16 格式(可能是基于屏幕截图),但 text/plain 的默认字符集是 us-ascii(参见 RFC2046 的 §4.1.2):

4.1.2。字符集参数

可以在 Content-Type 字段中指定的关键参数 “text/plain”数据是字符集。这是用一个指定的 “charset”参数,如:

Content-type: text/plain; charset=iso-8859-1

与其他一些参数值不同,字符集的值 参数不区分大小写。默认字符集,即 必须假定在没有 charset 参数的情况下,是 US-ASCII。

因此,您需要更改来自服务器的响应,以便正确识别正在使用的字符集,例如Content-Type: text/plain; charset=UTF-16(显然首先确保这实际上是资源的字符集)。


我会注意到,从我可以从 JSON 中获得的信息来看,它看起来主要是在西方脚本中。如果是这样,UTF-16 是不寻常且低效的选择,您可能会更好地使用 UTF-8。但我只有一小部分文本可以处理。

【讨论】:

  • 嗨 T.J.谢谢你的回答。我已经更新了这个问题。你能调查一下吗。我还需要更改服务器的响应吗?它也适用于 chrome 和 IE。问题仅出现在 Firefox 中。
  • @DOM:是的。如果服务器正在指定字符集,它将在 Content-Type 标题行上。 (作为比较,请查看Content-Type SO 与此页面一起提供服务。)因为不是,Firefox 似乎使用的是根据 RFC(US-ASCII)的默认值,而 IE 似乎可以看到 BOM(前两个字节的响应)并切换到将其视为 UTF-16。
猜你喜欢
  • 2023-02-08
  • 2020-09-03
  • 2019-12-27
  • 2022-01-02
  • 2017-04-28
  • 2020-06-26
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多