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>
有了這個定義「\」似乎是文本,因此<「> \ <」>(報價,反斜槓,報價)似乎是一個有效的引用字符串。但是,這與正確使用反斜槓作爲轉義字符相矛盾,甚至可能導致無法明確地確定引用字符串的結尾。我的錯誤在哪裏?
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」......都是一樣的。那些引用的字符串是否真的不能在語義上區分?
這回答了轉義問題,LWS語義問題是什麼? – johannes
首先,感謝這個問答,它幫助了我,並且[寫了一個總結](https://evolvis.org/pipermail/evolvis-platfrm-discuss/2014-November/000675.html)在工作中。 @johannes是的,他們不能。你可以在引用的字符串中將所有文字空間和製表符轉義成反斜槓,所以'$'\ t''變成'$'\\ \\\\'t''(或者,如果你想要更多的視覺表現, ''→'變成''\ \ \ \ \→''),換行符和其他控制字符就會丟失。 – mirabilos