Php HTTP请求和响应头有哪些字符集?

Php HTTP请求和响应头有哪些字符集?,php,http,encoding,utf-8,character-encoding,Php,Http,Encoding,Utf 8,Character Encoding,当HTTP客户端向Web服务器发送请求时,如下所示: GET /index.html HTTP/1.1 Host: www.example.com 服务器的响应如下:(示例取自维基百科) HTTP/1.1200正常 日期:2005年5月23日星期一格林尼治标准时间22:38:34 服务器:Apache/1.3.3.7(Unix)(Red Hat/Linux) 最后修改:周三,2003年1月8日23:11:55格林尼治标准时间 ETag:“3f80f-1b6-3e1cb03b” 内容类型:tex

当HTTP客户端向Web服务器发送请求时,如下所示:

GET /index.html HTTP/1.1
Host: www.example.com
服务器的响应如下:(示例取自维基百科)

HTTP/1.1200正常
日期:2005年5月23日星期一格林尼治标准时间22:38:34
服务器:Apache/1.3.3.7(Unix)(Red Hat/Linux)
最后修改:周三,2003年1月8日23:11:55格林尼治标准时间
ETag:“3f80f-1b6-3e1cb03b”
内容类型:text/html;字符集=UTF-8
内容长度:131
接受范围:字节
连接:关闭
示例页
你好,世界,这是一个非常简单的HTML文档。
响应包含字段
内容类型:text/html;字符集=UTF-8
。但是,这只告诉响应中空行之后的字节编码


请求和响应头(空行之前的所有内容)有什么字符集?它们是ASCII还是UTF-8或任何其他字符集?

这似乎有点复杂,但基本原则是头必须是ASCII

这在RFC 2616中曾经有过定义(有些模糊)。然而,去年夏天RFC2616被一系列RFC所取代,这些RFC从RFC2230开始,“超文本传输协议(HTTP/1.1):消息语法和路由”。它在第条中更现实地回答了这个问题,但仍然有些模糊:

历史上,HTTP允许字段内容中包含文本
ISO-8859-1字符集[ISO-8859-1],仅支持其他字符集
通过使用[RFC2047]编码。实际上,大多数HTTP头
字段值仅使用US-ASCII字符集[USASCII]的子集。
新定义的标题字段应将其字段值限制为
US-ASCII八位字节。接收者应在字段中处理其他八位字节
内容(obs文本)为不透明数据


HTTP基本语法中的字符当然是ASCII字符。某些标题可能包含其他数据。每个标头都定义了字符限制和字节解释。基本定义见。对于大多数标题,其显式语法将字符限制为ASCII。即使在注释中,RFC 7231也只允许使用非ASCII字节作为过时的功能。

HTTP 1.1的规范没有说明这一点吗?谢谢。这就是我需要知道的:)
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
ETag: "3f80f-1b6-3e1cb03b"
Content-Type: text/html; charset=UTF-8
Content-Length: 131
Accept-Ranges: bytes
Connection: close

<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>