URL编码 - 非法字符替换

时间:2010-12-24 10:41:19

标签: .net asp.net vb.net urlencode

我正在我正在进行的项目中进行一些网址重定向。我是网络开发的新手,并想知道删除任何非法路径字符的最佳做法是什么,例如'?等

我希望我不必手动用编码的网址替换每个字符。

我尝试过UrlEncode和HTMLEncode,但UrlEncode不适合?和HTMLEncode不适合'

E.G。如果我要使用以下内容:

Dim name As String = "Dave's gone, why?"
Dim url As String = String.Format("~/books/{0}/{1}/default.aspx", bookID, name)

Response.Redirect(url)

我试过这样包装网址:

Dim encodedUrl As String = Server.UrlEncode(url)

Dim encodedUrl As String = Server.HTMLEncode(url)

提前致谢。

P.S。圣诞快乐

2 个答案:

答案 0 :(得分:0)

URL规范(RFC 1738,1994年12月)存在一个问题,因为它限制了URL中允许的字符仅限于US-ASCII字符集的有限子集:

  

“......只有字母数字[0-9a-zA-Z],   特殊字符“$ -_。+!*'(),”   [不包括引号 - 编辑],和   用于他们的保留字符   可以使用保留的目的   在URL中未编码。“

所以我认为你需要担心?和我的系统

网址编码;转换:%7e%2fbooks%2f1%2fDave +已消失%2c +为什么%3f%2fdefault.aspx

现在,你在使用任何url重写吗?

答案 1 :(得分:0)

尝试以下,

String.Format("~/books/{0}/{1}/default.aspx", bookID, Server.UrlEncode(name))  

String.Format("~/books/{0}/{1}/default.aspx", bookID, 
    Server.UrlEncodeComponent(name))

我认为它的HttpUtility.UrlEncodeComponent,请参阅msdn以获取更多信息。