我正在使用C ++编写一个小型HTTP服务器(只是为了好玩)。
当收到来自客户端的请求时,我是否应该担心HTTP标头的字符集?是否保证所有这些都只包含一个字节的ASCII字符?
答案 0 :(得分:3)
是否保证所有这些字符串只包含一个字节的ASCII字符?
没有。 HTTP使用TCP,因此可以传输八位字节> = 128。
HTTP是否允许使用非ASCII字符?
是。请参阅ABNF了解字段内容(RFC 2616, Section 4.2)和引用字符串(RFC 2616, Section 2.2)。
HTTP是否定义了编码?
或多或少,通过声明非ISO-8859-1字符需要额外的编码层(同样,从2.2):
TEXT规则仅用于描述性字段内容和不打算由消息解析器解释的值。 * TEXT的单词只有在符合RFC 2047 [14]的规则编码时才包含ISO-8859-1 [22]以外的字符集中的字符。
这是否在实践中使用?
是。例如,在Content-Disposition中。
这是个好主意吗?
不,因为很多收件人和中间人都错了。
答案 1 :(得分:0)
这是一个很好的问题,我不知道但是想知道。我相信你会在这里找到答案:http://www.w3.org/Protocols/rfc2616/rfc2616.html
该文档说Headers遵循RFC822(http://www.ietf.org/rfc/rfc0822.txt)并且那个人说ASCII。我认为你可以依赖它的全部ASCII。