除了那些无法显示的字符外,还需要在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”是一样时。