用于JSON的内容类型头是什么?是 "application/json; charset=utf-8" 还是 "application/json"?

16
看起来JSON默认的编码是UTF-8,Spring MVC默认返回 application/json; charset=utf-8,这很难改变。
2个回答

20
根据RFC 4627,JSON文本应该使用Unicode进行编码,默认编码为UTF-8。
它进一步描述了如何检测不同的UTF-*编码,并建议不支持其他编码。
在这里,“SHALL”表示绝对要求(请参阅RFC 2119)。
实际上,没有理由使用非UTF编码与JSON一起使用(因为任何能够处理JSON的东西肯定可以处理UTF-8)。

3
任何能处理JSON的东西肯定也能处理UTF-8,你以为是这样吗?但是遗憾的是,无论是Chrome还是Firefox,在Content-Type中没有提供charset时,都会把JSON解释为Latin字符集。 - Stijn de Witt
就此而言,Chrome和Firefox早已修复。 - Julian Reschke

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

注意:此注册未定义“charset”参数。在符合要求的接收方上添加一个确实没有任何影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接