【问题标题】:What content type header to use for JSON? "application/json; charset=utf-8 " or "application/json"?用于 JSON 的内容类型标头是什么? “应用程序/json;charset=utf-8”还是“应用程序/json”?
【发布时间】:2013-11-17 20:33:59
【问题描述】:

好像JSON默认编码是UTF-8,Spring MVC默认返回application/json; charset=utf-8,很难改。

【问题讨论】:

    标签: json http spring-mvc


    【解决方案1】:

    根据RFC 4627

    JSON 文本应以 Unicode 编码。默认编码为 UTF-8。

    它继续描述了如何检测不同的 UTF-* 编码,表明不支持其他编码。

    “SHALL”在这里表示绝对要求(参见RFC 2119)。

    确实没有理由对 JSON 使用非 UTF 编码(因为任何可以处理 JSON 的东西肯定可以处理 UTF-8)。

    【讨论】:

    • 任何可以处理 JSON 的东西都可以处理 UTF-8 你会这么想的。但是很可惜,当 Content-Type 中没有提供 charset 时,Chrome 和 Firefox 都会把这个搞砸,并将 JSON 解释为拉丁文。
    • FWIW、Chrome 和 Firefox 早就修复了。
    【解决方案2】:

    在 application/json 上返回字符集参数是不正确的,因为该媒体类型没有定义字符集参数。见https://greenbytes.de/tech/webdav/rfc8259.html#rfc.section.11,最后一句:

    注意:没有为此注册定义“charset”参数。添加一个确实对合规的收件人没有影响。

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 2018-11-06
      • 2020-05-25
      • 2020-03-20
      • 2013-05-09
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多