2008-09-26 41 views
24

RFC 1738指定URL的語法,並提到我應該假定URL中的編碼字符應該放在哪個字符集中?

網址與
US-ASCII編碼字符集的圖形 可打印字符只寫了。 八位字節80-FF十六進制不是
用於US-ASCII,並且八位位組00-1F 和7F十六進制表示
控制字符;這些編碼必須是 。

但是,它並不說明這些八位字節表示的代碼集。

RFC 2396似乎嘗試和改進的情況,但:

對於 包含非ASCII字符的原始字符序列,但是,這種情況更爲 困難。如果可能存在多於一個的 [RFC2277],那麼傳輸意圖到 的八位字節序列的因特網協議表示字符序列預計將提供標識所使用的字符集的某種方式 。但是,目前在通用URI語法中沒有提供用於完成此標識的規定。一個單獨的URI可能需要一個字符集,定義一個默認字符集,或者提供一種方式來指示所使用的字符集。

預計在URI中對字符編碼的系統處理將是 ,作爲本規範的未來修改開發。

是否有任何不明確的方式讓客戶端可以確定在哪個字符集中解釋編碼的八位字節,或者服務器可以確定客戶端用於編碼的內容?

它在我看來像大多數服務器默認爲UTF-8,但這似乎是一個事實上的選擇超過了指定的一個。

回答

11

根據您的報價,網址是ASCII。就這樣。

URIs OTOH,允許更大的字符集;通常是UTF-8,就像你說的那樣。

需要記住的一點是URLs是URI的一個子集。因此,真正的問題是,這些是你在瀏覽器中編寫的內容?我猜你可以編寫一個URI,並且瀏覽器應該儘量轉換爲URL(這是HTTP/1.1支持,AFAICR)。對於非ASCII字符,表示十六進制代碼,通常爲UTF-8編碼。

+1

URL是不具有字符編碼的不透明標識符,不透明標識符可以被視爲僅對目標主機具有含義的字符的二進制字符串。目標主機可以根據需要應用URL數據的字符集解釋。這意味着客戶端無法控制意義或字符集,也無法表達選擇,因爲URL的解釋對於服務器來說是100%。因此,要回答原始問題,您不能假定它是服務器實現特定的任何字符集,請諮詢服務器管理員。 – 2013-06-04 11:44:25

4

我相信你要找的規格是RFC 3987,它描述了IRIs - 國際化的資源標識符。

相關問題