解释HTTP / 1.1头字段值时使用的编码

时间:2015-04-24 07:34:40

标签: http character-encoding http-headers

在HTTP / 1.1规范中,我在定义标题时得到了这个:

  

message-header = field-name“:”[field-value]

[...]

  

field-value = *(field-content | LWS)

     

field-contet =<构成字段值的OCTET,由* TEXT或令牌,分隔符和引用字符串>的组合组成

,OCTET和TEXT的定义是:

  

OCTET =<任何8位数据序列>

     

TEXT =<除CTL之外的任何OCTET,但包括LWS> ;其中CTL是指来自US-ASCII字符集的控制字符。

问题:现在,当涉及标题名称(在定义中称为字段名称)时,使用的编码是US-ASCII(在HTTP / 1.1规范中指定) ),但服务器应用程序如何知道用于标头值的编码?

注意:我认为US-ASCII编码是正常的,但该定义为不同的情况提供了足够的空间。

1 个答案:

答案 0 :(得分:1)

非ASCII代码点的语义基本上是未定义的。避免它们。

收件人通常使用ISO-8859-1解码,这至少允许稍后恢复(因为它会保留所有八位字节)。

(另外:您正在查看错误的规范; RFC 2616已被RFC 7230淘汰)