2009-05-03 4 views
23

Когда браузер отправляет HTTP-запрос на веб-сервер, какая кодировка используется для кодирования протокола HTTP на проводе? Это ASCII? UTF8? или UTF16? Или он указывает, какую кодировку он использует в предопределенном формате (до какого-либо декодирования?)Какая кодировка используется протоколом HTTP?

P.S Я не спрашиваю о фактической полезной нагрузке (например, HTML) запроса/ответа. Я спрашиваю о строке запроса (т.е. GET /index.html HTTP/1.1) и заголовки (т.е. Host: google.com)

ответ

7

RFC 2616 включает в себя следующее:

OCTET   = <any 8-bit sequence of data> 
CHAR   = <any US-ASCII character (octets 0 - 127)> 
UPALPHA  = <any US-ASCII uppercase letter "A".."Z"> 
LOALPHA  = <any US-ASCII lowercase letter "a".."z"> 
ALPHA   = UPALPHA | LOALPHA 
DIGIT   = <any US-ASCII digit "0".."9"> 
CTL   = <any US-ASCII control character 
        (octets 0 - 31) and DEL (127)> 
CR    = <US-ASCII CR, carriage return (13)> 
LF    = <US-ASCII LF, linefeed (10)> 
SP    = <US-ASCII SP, space (32)> 
HT    = <US-ASCII HT, horizontal-tab (9)> 
<">   = <US-ASCII double-quote mark (34)> 

А потом почти все остальное в этом документе определяется в терминах этих лиц (OCTET, CHAR, и т.п.). Таким образом, вы можете просмотреть RFC, чтобы выяснить, какие части HTTP-запроса/ответа могут включать OCTET s; все остальные части должны быть ASCII. (Я бы сделал это сам, но это заняло бы много времени)

Для строки запроса конкретно имя метода и версия HTTP должны быть только символами ASCII, но возможно, что сам URL может включать в себя не-ASCII-символы. Но если вы посмотрите на RFC 2396, это говорит об этом.

URI представляет собой последовательность символов из очень ограниченного набора, то есть буквы основного латинского алфавита, цифры и несколько специальных символов.

Я думаю, это означает, что он будет состоять из символов ASCII.

20

HTTP 1.1 использует US-ASCII в качестве основного набора символов для request line в запросах, в status line в ответах (за исключением reason phrase) и field names, но позволяет любому октет в значениях полей и message body.

+2

Я знаю, что мы должны ** ожидать ** фразы, но вы имеете в виду, что это ** кроме ** - иона тоже? ;-) – Lucius

Смежные вопросы