除了那些無法顯示的字符外,還需要在URL中對那些保留(reserved)字符和不安全(unsafe)字符進行編碼。
所謂保留字符就是那些在URL中具有特定意義的字符。例如,在URL中用於分隔路徑名中各元素的斜線字符。
如果需要在URL中包含一個斜線,而不希望將該斜線當作分隔符使用,那麼可以將其編碼爲%2F(注3):
http://www.calculator.com/compute?3%2f4
在上面的示例中,該URL實際會引用www.calculator.com的服務器上名爲compute的資源,並將用問號(?)描述的字符串“3/4”傳遞給該資源。
在這裏,估計該資源可能是一個能夠執行運算功能的服務器端程序,它可以接收傳遞來的值,並返回一個結果。
不安全字符是指那些在URL中沒有特殊含義,但在URL所在的上下文中可能具有特殊意義的字符。
例如雙引號("")在標籤中用於限定URL的屬性值。如果您想要在URL中直接包括雙引號,那麼可能會令瀏覽器感到困惑。
因此,應該使用雙引號的編碼%22,以避免任何可能的衝突。
其他保留字符和不安全字符也應該始終使用它們的編碼。這些字符如下所示。
保留字符和不安全字符及其URL編碼
字符:;、描述:分號、用法:保留、編碼:%3B
字符:/ 、描述:斜線、用法:保留、編碼:%2F
字符:? 、描述:問號、用法:保留、編碼:%3F
字符:: 、描述:冒號、用法:保留、編碼:%3A
字符:@ 、描述:"at"符號、用法:保留、編碼:%40
字符:= 、描述:等號、用法:保留、編碼:%3D
字符:& 、描述:“和”符號、用法:保留、編碼:%26
字符:< 、描述:小於號、用法:不安全、編碼:%3C
字符:> 、描述:大於號、用法:不安全、編碼:%3E
字符:" 、描述:雙引號、用法:不安全、編碼:%22
字符:% 、描述:百分號、用法:不安全、編碼:%25
字符:{ 、描述:左大括號、用法:不安全、編碼:%7B
字符:} 、描述:右大括號、用法:不安全、編碼:%7D
字符:| 、描述:豎線、用法:不安全、編碼:%7C
字符:\ 、描述:反斜線、用法:不安全、編碼:%5C
字符:^ 、描述:加子號、用法:不安全、編碼:%5E
字符:~ 、描述:波浪號、用法:不安全、編碼:%7E
字符:[ 、描述:左中括號、用法:不安全、編碼:%5B
字符:] 、描述:右中括號、用法:不安全、編碼:%5D
字符:` 、描述:反單引號、用法:不安全、編碼:%60
通常情況下,如果對某個字符能否在URL中使用有疑問,那麼您應該始終使用該字符的編碼。
除字母、數字和字符\$-_.+!*'()外的其他所有字符都應該使用編碼。這是一條很重要的經驗。
使用字符編碼絕不會出錯,除非該字符在URL中有特定的意義。
例如,在http URL中的斜線編碼會使斜線成爲一個普通的字符,而不是一個分隔URL的路徑名分隔符。
注3:十六進制編號是基於16個字符的:從0到9和從A到F,它們的值相當於十進制的O~15。
同樣,用於這些擴展值的字母並不區分大小寫,例如,“a”(等於十進制的10) 和“A”是一樣時。