The RFC-2616 https://www.ietf.org/rfc/rfc2616.txt3.7.1 中规定:
当发送方没有提供明确的字符集参数时,媒体
“text”类型的子类型被定义为具有默认字符集
通过 HTTP 接收时的“ISO-8859-1”值。
这就是为什么我通常使用例如text/plain; charset=utf-8
as Content-Type
Header.
MediaTypes 类型怎么样application
?
我经常看到并使用像这样的标题Content-Type: application/xml; charset=UTF-8
。然后,RESTeasy 2.3.7 强制客户端也发送字符集参数Accept
标头。否则它会回答406
。 RESTeasy 3.0.6 在这里似乎更加宽容,所以我不确定这里的最佳实践是什么。
RFC 2616 于 2014 年 6 月被一组 RFC 废弃,其中包含通用 HTTP 规范的 RFC 是RFC 7213 http://www.rfc-editor.org/rfc/rfc7231.txt。请使用RFC编辑器 http://www.rfc-editor.org检查 RFC 的当前状态。
RFC 7213 明确指出(在附录 B 中):
文本媒体类型的默认字符集 ISO-8859-1 已
删除;现在默认值是媒体类型定义所说的任何内容。
另一方面,RFC 6657 https://www.rfc-editor.org/rfc/rfc6657在预计此类变化的同时,声明:
“text/plain”的默认“charset”参数值未更改
来自 [RFC2046] 并保留为“US-ASCII”。
因此,如果您的数据不是 ASCII (= US-ASCII),您应该继续声明charset
明确参数。
XML 规范、条款4.3.3 http://www.w3.org/TR/REC-xml/#charencoding,指定:
在没有外部字符编码信息的情况下(例如
MIME 标头),以其他编码方式存储的已解析实体
比 UTF-8 或 UTF-16 必须以文本声明开头 [...]
包含编码声明
因此,对于通过 HTTP 传输的 XML,无论内容类型如何,都必须在 HTTP 标头或编码声明中显式设置编码,例如<?xml encoding='UTF-8'?>
.
For application
一般类型,可能适用特定类型的规则。字符编码与大多数人无关application
类型,因为类型定义了自己的编码方案,包括任何嵌入字符数据的编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)