2012-10-03 27 views
2

假设我我为什么要进行urlencode通过GET传递的URL

有什么优势做

'http://site.com/something?url=' . urlencode('http://lol.com/lol'); 

,而不是仅仅通过在URL中的未编码版本(例如,安全等)在?为什么我应该urlencode通过GET传递的东西,而不是只传递一个未编码的版本(虽然当然,如果URL参数有&或?或=在里面,那么我肯定应该编码它......但是假设他们没有,为什么应该我编码他们)

回答

1

有URL中有特殊含义的字符。如果你在没有编码的情况下传递这些字符,那么这些字符在外部URL中将具有特殊含义(而不是它们所属的内部URL)。

例如,如果你想通过

http://example.com/foo?1=2&3=4 

而且你不编码,那么你将获得:

http://example.com/?url=http://example.com/foo?1=2&3=4 

url is http://example.com/foo?1=2 
3 is 4 

假设他们没有,我为什么要编码他们

因为那你必须看看你传递的每一个URL来决定它是否需要编码。

总是编码要简单得多,而且不容易出错,然后根据具体情况来决定。

0

只要我知道第二个示例是相当不错的,如果你有在您的网址中使用unicode字符的可能性。