ASP C#:特殊字符:#、$、+ 不能通过 URL 参数

Posted

技术标签:

【中文标题】ASP C#:特殊字符:#、$、+ 不能通过 URL 参数【英文标题】:ASP C#: Special characters: #, $, + cant pass trough URL parameter 【发布时间】:2014-09-18 16:12:01 【问题描述】:

我需要从虚拟文件夹中获取文件。我有 GetDocumentPreview.aspx 可以做到这一点。参数是 URL 类型。下面好一个:

/GetDocumentPreview.aspx?name=filename&type=jpg

//But if I ask for file with #, &, + in name:

/GetDocumentPreview.aspx?name=&filename&type=jpg

/GetDocumentPreview.aspx?name=#filename&type=jpg

/GetDocumentPreview.aspx?name=+filename&type=jpg

我没有文件,因为字符#、&、+(我已经测试了所有字符)。

如何将#、&、+ 传递给 URL 参数。我需要使用 URL 参数,因为我从带有图像的 javascript 悬停工具提示中调用此类。

【问题讨论】:

【参考方案1】:

你需要转义那些特殊字符:

这个功能做得最好:

小心,不要使用 UrlEncode

【讨论】:

【参考方案2】:

使用这些字符的 urlencoded 值。可以在此处找到列表 -

http://www.w3schools.com/tags/ref_urlencode.asp

例如,& 将是 - %26

所以,/GetDocumentPreview.aspx?name=&filename&type=jpg 将是 - /GetDocumentPreview.aspx?name=%26filename&type=jpg

【讨论】:

【参考方案3】:

如果要将特殊字符放入 URL,则应对其进行编码。

您可以在字符串 URL 上使用HttpServerUtility.UrlEncode,然后再将其放入超链接/按钮重定向位置。一个例子是:

string destinationURL = "http://www.contoso.com/default.aspx?user=specialCharacters";

NextPage.NavigateUrl = "~/Finish?url=" + Server.UrlEncode(destinationURL);

在您的情况下,您应该在将文件名放入 URL 字符串之前对文件名进行 UrlEncode,提到的特殊字符将用作:

& = %26
+ = %2B

更多信息可以在这里查看:http://msdn.microsoft.com/en-us/library/zttxte6w(v=vs.110).aspx

【讨论】:

以上是关于ASP C#:特殊字符:#、$、+ 不能通过 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Razor - C# 变量

使用 C# 使用特殊字符写入 XML 文档

急!C# 从文件名里去处特殊字符

C# 如何去掉string中所有转义字符(特殊符号)?

验证文本框只允许数字,没有特殊字符或字母[重复]

C#中的特殊字符打印[重复]