使用JSON正文对HTTP POST请求进行默认编码

使用JSON正文对HTTP POST请求进行默认编码,json,http,encoding,utf-8,character-encoding,Json,Http,Encoding,Utf 8,Character Encoding,当内容类型为“application/json”且未给出显式字符集时,HTTP POST请求的默认编码是什么 似乎有两种规格存在冲突: 表示“JSON文本应采用Unicode编码。默认编码为UTF-8。” 表示“当发送方未提供显式字符集参数时,“文本”类型的媒体子类型被定义为在通过HTTP接收时具有默认字符集值“ISO-8859-1” 这是来自W3C的算法表单XMLHttpRequest JSON响应实体主体是JavaScript值或 表示响应实体主体。如果JSON响应实体 body为null

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

似乎有两种规格存在冲突:

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

    • 这是来自W3C的算法表单XMLHttpRequest

      JSON响应实体主体是JavaScript值或 表示响应实体主体。如果JSON响应实体 body为null,将其设置为以下算法的返回值:

      1. Let JSON text be the result of running utf-8 decode on byte stream response entity body.
      
      2. Return the result of invoking the initial value of the parse property of the JSON object defined in JavaScript, with JSON text as
      
      它的唯一参数,如果该函数引发异常,则为null


      服务器应默认将其设置为UTF-8。

      您正在查看RFC 2616,它已被RFC 7231淘汰。RFC 2616中的文本已在RFC 7231中消失。在任何情况下,该子句仅适用于
      文本/…
      媒体类型,而不适用于
      应用程序/…
      媒体类型。

      应用程序/json
      媒体类型适用于在中定义的mally(废除RFC 4627),并在IANA注册,没有必需或可选的参数(因此,
      charset
      没有为
      application/json
      定义)

      说:

      JSON文本应采用UTF-8、UTF-16或UTF-32编码。默认值 编码是UTF-8,用UTF-8编码的JSON文本是 可互操作,即用户将成功读取这些文件 实现的最大数量;有许多实现 无法成功读取其他编码的文本(例如 UTF-16和UTF-32)

      实现不能将字节顺序标记添加到 JSON文本。为了实现互操作性,实现 解析JSON文本可能会忽略字节顺序标记的存在 而不是将其视为错误


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

      谢谢。但我是在询问HTTP请求,而不是响应。您没有使用
      text/..
      媒体类型发送请求,因此HTTP规范的该条款不适用。