Kwa*_*Seo 6 encoding json http utf-8 character-encoding
当内容类型为“application/json”且没有给出明确的字符集时,HTTP POST 请求的默认编码是什么?
似乎有两个规范存在冲突:
该媒体类型在RFC 7158 JavaScript 对象表示法 (JSON) 数据交换格式
application/json(已废弃 RFC 4627)中正式定义,并已向 IANA 注册,没有必需或可选参数(因此未定义)。charsetapplication/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(如上所述,这是不允许的)或显式charset(未定义)。
这是来自 W3C 的 XMLHttpRequest 算法
JSON 响应实体主体是表示响应实体主体的 JavaScript 值。如果JSON响应实体主体为null,则将其设置为以下算法的返回值:
Run Code Online (Sandbox Code Playgroud)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。
http://www.w3.org/TR/XMLHttpRequest/#json-response-entity-body
服务器默认将其设置为 UTF-8。
| 归档时间: |
|
| 查看次数: |
7643 次 |
| 最近记录: |