2011-10-25 54 views
3

http1.1標準であるrfc2616では、引用符付きの文字列は次のように定義されます。この定義にhttp1.1の引用文字列の正確な構文とセマンティクスrfc2616

quoted-string = (<"> *(qdtext | quoted-pair) <">) 
uoted-pair = "\" CHAR 
CHAR   = <any US-ASCII character (octets 0 - 127)> 
qdtext   = <any TEXT except <">> 
TEXT   = <any OCTET except CTLs, but including LWS> 

"\" TEXTのようですので、< "> < \">(引用符、バックスラッシュ、引用符)、有効な引用符で囲まれた文字列のようです。しかし、これはエスケープ文字としてのバックスラッシュの正しい使い方と矛盾し、引用文字列の終わりを明白に判断できないことにつながります。ここで私のエラーはどこですか?

RFCも

LWS   = [CRLF] 1*(SP | HT) 
All linear 
white space, including folding, has the same semantics as SP. A 
recipient MAY replace any linear white space with a single SP before 
interpreting the field value or forwarding the message downstream. 

を述べて私もLWS内部の引用符で囲まれた文字列は、SPで置き換えることができるという解釈を読みました。私がrfcを文字通り取るなら、それは何を言っています。引用符で囲まれた文字列 ""、 "\ n"、 "\ n \ t \ t \ t"、...はすべて同じ意味であるので、私はこれに困惑しています。これらの引用符で囲まれた文字列は、実際には意味的に区別できないでしょうか?

答えて

3

質問1:これはRFCのバグです。

HTTPbis WG ticket 31およびHTTPbis, Part 1, Section 3.2.3を参照してください。

質問2:HTTPbis Part 1, 3.2.1を参照してください - そうではありませんが、これらは区別できません。

+0

これはエスケープする問題に答えるもので、LWSセマンティクスの質問は何ですか? – johannes

+0

まず、このQ&Aをいただきありがとうございました。私は助けてくれました。仕事場では[要約を書きました](https://evolvis.org/pipermail/evolvis-platfrm-discuss/2014-November/000675.html)。 @ジョハンズはいそうすることはできません。 '$ '\ t''は' $' \\ \\ \\\ t''になります(または、より視覚的な表現が必要な場合は ' \ "\" \ "")になり、改行やその他の制御文字は失われます。 – mirabilos

関連する問題