我正在我正在进行的项目中进行一些网址重定向。我是网络开发的新手,并想知道删除任何非法路径字符的最佳做法是什么,例如'?等
我希望我不必手动用编码的网址替换每个字符。
我尝试过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。圣诞快乐
答案 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以获取更多信息。