gpt4 book ai didi

json - 带有 JSON 正文的 HTTP POST 请求的默认编码

转载 作者:可可西里 更新时间:2023-11-01 15:27:40 27 4
gpt4 key购买 nike

当内容类型为“application/json”且未给出显式字符集时,HTTP POST 请求的默认编码是什么?

似乎两个规范有冲突:

  • JSON spec表示“JSON 文本应以 Unicode 编码。默认编码为 UTF-8。”
  • HTTP spec表示“当发件人未提供明确的字符集参数时,“文本”类型的媒体子类型被定义为在通过 HTTP 接收时具有默认字符集值“ISO-8859-1”。”

最佳答案

application/json 媒体类型在 RFC 7158 The JavaScript Object Notation (JSON) Data Interchange Format 中正式定义(它废弃了 RFC 4627),并在 IANA 注册,没有必需或可选的参数(因此,charset 没有为 application/json 定义)。

Section 8.1 Character Encoding说:

JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The defaultencoding is UTF-8, and JSON texts that are encoded in UTF-8 areinteroperable in the sense that they will be read successfully by themaximum number of implementations; there are many implementationsthat cannot successfully read texts in other encodings (such asUTF-16 and UTF-32).

Implementations MUST NOT add a byte order mark to the beginning of aJSON text. In the interests of interoperability, implementationsthat parse JSON texts MAY ignore the presence of a byte order markrather than treating it as an error.

application/... 媒体类型通常定义为二进制 格式。 JSON 解析器很容易通过查看前几个字节来区分 UTF-8、UTF-16 和 UTF-32,因此不需要 BOM(这是不允许的,如上所述)或显式 charset(未定义)。

关于json - 带有 JSON 正文的 HTTP POST 请求的默认编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com