顯然%需要編碼。所述wikipedia article on the standard說:爲什麼%(%)在RFC 3986(URI語法)中被認爲是保留字符?
因爲百分比(「%」)字符用作 百分比編碼八比特組指示,它必須被百分比編碼爲「%25」爲 八位位組將被用作數據在一個URI內。
爲什麼它不被列爲保留字符?很明顯,它是保留在URI的上下文中表示一些特殊的東西......
顯然%需要編碼。所述wikipedia article on the standard說:爲什麼%(%)在RFC 3986(URI語法)中被認爲是保留字符?
因爲百分比(「%」)字符用作 百分比編碼八比特組指示,它必須被百分比編碼爲「%25」爲 八位位組將被用作數據在一個URI內。
爲什麼它不被列爲保留字符?很明顯,它是保留在URI的上下文中表示一些特殊的東西......
「保留」字符旨在作爲URI的不同部分之間的分隔符可用。百分號不用於那個—由於它在百分比編碼中的使用而不能用於那個—。
這可能有助於澄清問題指出,還有的「毫無保留」字符的單獨的列表,以及百分號是不是其中的一個,或者:
unreserved = ALPHA/DIGIT/"-"/"."/"_"/"~"
(從http://www.ietf.org/rfc/rfc3986.txt,頁面底部12)。換句話說,在URI的上下文中,「保留」具有比預期更具體的含義。 :-)
百分號已通過參與語法規則pct-encoded
保留。此外,這一段似乎對這個問題有所啓發:
URI由一組有限的字符組成,由數字,字母和一些圖形符號組成。這些字符的保留子集可用於劃分URI內的語法組件,而其餘字符(包括未保留的字符集和不作爲分隔符的保留字符)定義每個組件的標識數據。
這表明百分比符號本身確實保留用於百分比編碼(因爲它不限定一個URI內的語法組件)。你原來的解釋是正確的,我認爲這只是一個語義問題。
保留字符是那些有一些特殊的意義在URI,因此需要以某種方式進行轉義,如果他們用於除他們的特殊用途以外的東西。
百分號字符不是在URI中有一個特殊的含義 - 這使得它成爲轉義/編碼字符的不錯選擇。
它被用來編碼的事實是百分比本身需要被編碼百分比編碼的唯一原因。
這是類似的字符轉義,其中反斜線\
已本身進行轉義\\
只因爲它是選擇做初步轉義爲\t
或\n
好角色......如果在一個URI中百分號字符被用於表示其他字符的目的,並且只允許用於這個目的,那麼在我看來,它構成了一個URI中的特殊含義,不是嗎? :-) –
@John - No. :-)如果用在URI中,百分號字符只是表示百分號字符,就像'A'的意思是'A'。它在URI中並不特殊,並且不保留。這是逃避/編碼的行爲,使它變得特別。假設'〜'被選爲轉義字符。那麼'&'仍然必須被轉義,但'%'可以正常使用;這就是你如何判斷'&'具有特殊含義,但'%'不具有 - 和'〜'必須被轉義的原因,因爲它對**編碼而言是特殊的**而不是** URI ** –
嗯。但是,所有URI都使用百分比編碼,實際上必須使用百分比編碼,對吧? –