例如,它是否是有效的ajax请求:
$.ajax({
type: "POST",
url: "SomePage.aspx/GetSomeObjects",
contentType: "application/json; charset=utf-8",
...
});
它有时被用作示例,或者软件可以在没有显式字符集的情况下中断。
rfc 4627 for application/json媒体类型表示不接受第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的字符编码?
一些人认为charset可以用于:
我不同意你的评估,那就是必须放弃。RFC 2046声明“除“文本”子类型之外的其他媒体类型可能选择使用此处定义的字符集参数”,这表明对应用程序类型上字符集参数的存在没有限制。此外,RFC 2045声明“MIME实现必须忽略其名称不可识别的任何参数。”因此,假设它的存在会造成任何伤害是不合理的。
兼容rfc的软件可以生成带有charset参数的内容类型应用程序/json吗?符合rfc的软件应该接受这样的请求吗?
rfc兼容软件是否应接受此类请求?
根据朱利安·雷什克的回答,显然不是。但是,正如您所指出的,如果您想与那些不符合rfc的主机交谈,您可能会在野外遇到它,然后必须处理它。
首先,如果您有代码来处理HTTP框架中基于文本的消息的Accept-Charset
和内容类型的charset部分,为什么不把它也用于JSON呢?在编程方面,它更容易(json没有特别的规则),也更通用。
就个人而言,我会说让我们对每一位文本使用Unicode(使用您引用的编码检测)。不幸的是,有些客户端设备,例如日本手机,不处理Unicode,而只处理Shift\u-JIS
。否则他们会很高兴成为消费者(和付费客户)。那你打算怎么办?在我的特殊情况下,为了让这些客户机加入,我通过标准HTTP机制配置了字符集。
顺便说一下,HTTP 2.0正在开发中,如果这些人希望创建一个严格遵守的标准,他们将不得不编写验收测试。当然,这也可能意味着如果规则不能偶尔改变,则排除上述遗留客户。
如果除了你没有其他人是顺从的,那么顺从又有什么意义呢?我想知道,即使是Opera
是否符合要求,或者,就这一点而言,它实现的所有rfc是否都可以在一开始就得到明确的解释。我不这么认为,尤其是在像HTTP
这样的大型应用程序中。
如果这听起来像是对超文本传输协议的抨击,让我这么说吧:超文本传输协议是一个伟大的标准,它的概念不仅彻底改变了互联网。例如,指定资源的方式(无状态)或缓存的方式已经建立了良好的模式,这些模式已经渗透到许多应用程序的实现中。HTTP 2可以从1.1中断的地方开始。让我们只希望SPDY不会1比1被采用。我不想这么说,但在这种情况下,微软的超文本传输协议速度移动性在许多方面比谷歌的PUSHy(而且迄今为止还不稳定)SPDY更有超文本传输协议。
最近的json rfc 7159表示:
注意:没有为此注册定义“字符集”参数
添加一个确实对符合要求的收件人没有影响。
i、 例如,字符集
必须被符合要求的收件人忽略。
这与rfc 2045一致:“MIME实现必须忽略其名称不可识别的任何参数。”因为rfc 7159仍然为application/json mime媒体类型指定:“必需参数:n/a;可选参数:n/a”(无参数)。
json文本不再被约束为对象或数组,基于前两个字符计算字符编码的旧的第3节在新的rfc中消失了。允许使用UTF-8、UTF-16或UTF-32,但无法指定编码(无BOM,默认为UTF-8)。
在http/1.1中,charset参数是否可以与application/json内容类型一起使用?
如果使用charset="utf-8"
也没有什么坏处-utf-8是json文本的默认编码,但是其他值可能会误导,因为合规的收件人必须忽略该值。它只能中断不正确解析Content-Type标头的客户端,例如,通过将其逐字与“应用程序/json”进行比较,或者尝试使用utf-8编码以外的其他编码来解码json文本的客户端。
符合rfc的软件是否可以使用字符集参数生成内容类型application/json?
否。没有为application/json定义任何参数。
rfc兼容软件是否应接受此类请求?
是的,应该是这样。必须忽略charset
的值。
ECMA-404(JSON数据交换格式)根据Unicode代码点定义json文本,即json本身没有指定关于编码细节的行为。
ECMA-262(ECMAScript语言规范)还定义了字符串(Unicode类型)之上的json格式。
Application/json没有定义charset参数,所以包含一个是不正确的。RFC2046所说的是,应用程序类型通常可以有一个字符集参数,如Application/xml。但是JSON没有。
问题内容: 例如,它是否是有效的ajax请求: 有时仅作为示例,否则软件可能会在没有显式字符集的情况下崩溃。 用于application / json媒体类型的rfc 4627 表示,它不接受第6节中的任何参数: 可以解释为charset不应该与application /json一起使用。 和第3节表明,这是没有必要指定字符集: 因为可以从内容推断出UTF-8、16、32编码。为什么说UTF-8是
嗨,有人能帮我处理这个错误吗?当我使用邮递员发送邮件请求时,这里是我的控制器 这就是我使用postman发送json的方式 我正在尝试搜索如何修复它,但错误仍然存在 编辑:这是邮递员的标题 提前致谢
问题内容: 似乎JSON默认编码为UTF-8,Spring MVC 默认返回 ,很难更改。 问题答案: 根据RFC 4627 JSON文本应以Unicode编码。默认编码为UTF-8。 它继续描述了如何检测不同的UTF- *编码,这表明不支持其他编码。 “ SHALL”表示此处的绝对要求(请参阅RFC 2119)。 而且真的是没有理由使用与JSON非UTF编码(如任何可以处理JSON可以 肯定 处
问题内容: 使用firebug时,我在asp.net mvc 4项目中收到此有线错误“ NetworkError:415无法处理… xt / xml; charset = utf-8’– ”。 代码: 服务代码: 该接口是: 和网络配置,我在WCF中使用了无文件: 问题答案: 您需要使用,而不是代码中的常规。这将为端点配置适当的绑定()和行为()以遵守该属性。
是否可以将“默认内容类型”设置为“application/json;v=2.0”。我说 default 是因为我使用的是 HttpClient 类,并且我使用 DefaultRequestHeaders 将我的代理设置为默认值。 我按照这个例子来创建我的头https://stackoverflow.com/a/10679340/196526,但是我也使用版本控制,关于版本控制的信息保存在内容类型中
我正在创建一个SpringBoot2OAuth2客户机/服务器应用程序。授权服务器成功登录并重定向到客户端,但客户端收到重定向时(http://localhost:8080/login/oauth2/code/xe?code=ACK4Ae 堆栈跟踪 服务器代码 SpringBoot2客户端配置 在服务器pom中 在客户端pom中