$.ajax({
type: "POST",
url: "SomePage.aspx/GetSomeObjects",
contentType: "application/json; charset=utf-8",
...
});
它有时用作示例,或者软件可以在没有明确的字符集的情况下中断。
application/json 媒体类型的 rfc 4627表示它不接受第 6 节中的任何参数:
The MIME media type for JSON text is application/json.
Type name: application
Subtype name: json
Required parameters: n/a
Optional parameters: n/a
可以解释为 charset 不应与 application/json 一起使用。
第 3 节建议不必指定字符集:
JSON text SHALL be encoded in Unicode. The default encoding is
UTF-8.
Since the first two characters of a JSON text will always be ASCII
characters [RFC0020], it is possible to determine whether an octet
stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
at the pattern of nulls in the first four octets.
00 00 00 xx UTF-32BE
00 xx 00 xx UTF-16BE
xx 00 00 00 UTF-32LE
xx 00 xx 00 UTF-16LE
xx xx xx xx UTF-8
因为可以从内容中推断出 UTF-8、16、32 编码。为什么说 UTF-8 是默认的?rfc 中没有指定选择其他字符编码的方式,无论如何都可以确定地找到编码。或者是否有其他(不是 UTF-8、16、32)支持 Unicode 的字符编码?
有人认为可以使用字符集:
我不同意你的评估,即必须放弃它。RFC 2046 声明“除“文本”子类型之外的其他媒体类型可能会选择使用此处定义的 charset 参数”,这表明应用程序类型中 charset 参数的存在没有限制。此外,RFC 2045 声明“MIME 实现必须忽略其名称无法识别的任何参数”。因此,假设它的存在会造成任何伤害是不合理的。
符合 rfc 的软件可以生成带有字符集参数的内容类型 application/json 吗?符合 rfc 的软件应该接受这样的请求吗?