繁体   English   中英

application / * Content-Type和charset属性

[英]application/* Content-Type and charset attributes

RFC-2616在3.7.1中说明:

当发送方未提供显式字符集参数时,“文本”类型的媒体子类型被定义为在通过HTTP接收时具有默认字符集值“ISO-8859-1”。

这就是为什么我通常使用例如text/plain; charset=utf-8 text/plain; charset=utf-8作为Content-Type标题。

application类型的MediaTypes怎么样?

我经常看到像Content-Type: application/xml; charset=UTF-8这样的头文件Content-Type: application/xml; charset=UTF-8 Content-Type: application/xml; charset=UTF-8 RESTeasy 2.3.7然后强制客户端也在Accept标头中发送charset参数。 否则它将以406回答。 RESTeasy 3.0.6在这里似乎更宽容,所以我不确定这里的最佳做法是什么。

RFC 2616在2014年6月被一组RFC淘汰,其中包含一般HTTP规范的RFCRFC 7213 请使用RFC编辑器检查RFC的当前状态。

RFC 7213明确指出(在附录B中):

ISO-8859-1的默认字符集用于文本媒体类型
删除; 现在默认是媒体类型定义所说的。

另一方面, RFC 6657虽然预见到了这些变化,但声明:

“text / plain”的默认“charset”参数值与[RFC2046]保持不变,并保持为“US-ASCII”。

因此,如果您的数据不是ASCII(= US-ASCII),则应该明确声明charset参数。

XML规范,第4.3.3节 ,规定:

在没有外部字符编码信息(例如MIME头)的情况下,以UTF-8或UTF-16以外的编码存储的解析实体必须以包含编码声明的文本声明开头。

因此,对于通过HTTP传输的XML,无论内容类型如何,编码必须在HTTP头或编码声明中明确设置,例如<?xml encoding='UTF-8'?>

对于一般的application类型,可能适用特定于类型的规则。 字符编码与大多数application类型无关,因为类型定义了自己的编码方案,包括任何嵌入字符数据的编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM