2012-03-08 58 views
5

我的網址,閱讀RFC2396它說

許多URI包括由組件或分隔,某些 特殊字符。這些字符被稱爲「保留」,因爲 它們在URI組件中的使用限於其保留的 目的。

但在網址的查詢部分的部分(之間?和#)說

3.4。查詢組件 查詢組件是由資源 解釋的一串信息。

query   = *uric 

在一個查詢組件,字符 「;」, 「/」, 「?」 「:」, 「@」, 「&」, 「=」, 「+」, 「」和「$」保留。

的「每個這些字符保留的目的是什麼?我的理解&,=和+在查詢中使用什麼,但對於其他角色?

更實際,我應該始終URL編碼這些字符時,他們的查詢瀏覽器和服務器,我已經看到手柄:和;和其他字符不被編碼

回答

5

我認爲,科RFC 3986,它淘汰了RFC 2396 2.2,擁有 可能的解釋。我引用:

這些字符被稱爲「保留」,因爲它們可以(或可以不)是 由通用語法定義的作爲分隔符,由每個特定的方案的語法,或 由URI的解引用算法的特定實現的語法。

我認爲Berners-Lee等人試圖在這裏得到的是,即使 並非所有保留字符都用於RFC RFC中描述的通用語法中,作者想留下足夠的空間用於將來的方案或實現特定的代碼以便能夠使用那些字符作爲他們看到了合適的 。

至於是否應該編碼這些字符,我的觀點是,你應該 研究和使用遵循標準 一個Percent-Encoding Algorithm,而不是使用非標準一個或力圖使你自己。例如,如果您的 正在使用像C#或Python這樣的語言,那麼這些 語言附帶的庫包含該算法的符合標準的實現。有關更多 的詳細信息,請參閱RFC 3986的第2.4節介紹何時進行編碼或解碼。

+0

不錯的答案。我確信你有回答一個幾個月前的問題的徽章,恭喜! :P – 2013-01-23 19:32:17

+0

有一個這樣的徽章,它被稱爲「復興」 – 2013-01-23 20:09:33

相關問題