如何将“”更改为“/”
本文关键字: | 更新日期: 2023-09-27 18:34:14
我的 Web 程序在尝试访问目录名和文件名之间有反斜杠的 C# 程序后面的代码中的文件时出错。 该文件的地址进入我的网页,查询值为"deaths''bakerd.htm"。 但是,浏览器将其转换为"deaths%08akerd.htm"。
网页中的网址显示
'http://localhost:57602/obitm.aspx?url=deaths%08akerd.htm'
并说找不到网页,但网页 obitm.aspx 确实存在,为什么会说它没有呢?
如果我在 Windows 资源管理器中手动将查询值的值更改为"deaths/bakerd.htm",则在浏览器中作为查询值进入时不会进行任何转换,并且我能够在 C# 程序中访问该文件。
我尝试使用
thisurl = url.replace("''", "/")
但这并没有改变任何事情。
我还没有在我的 C# 程序中尝试过任何转换。 那么如何以编程方式将"''"更改为"/"呢? 我不知道为什么会发生这种情况,而且非常令人困惑。 任何帮助,不胜感激。
只是在 URL 字符串中将 '' 转换为/对您不起作用,因为在这种情况下,"''b"将转换为退格字符,该字符被编码为 %08 - 这是退格字符的 ASCII 等效值的十六进制值。
要解决这种情况,您可以将"%08"转换为字符串"/B",但是各种字符有很多HTML代码,尝试这些代码既没有效率,也没有乐趣。
您从哪里获得包含文件名名称的原始字符串?如果这是您可以控制的内容,请在读取文件的路径/名称时以及在将 URL 传递给 Web App 之前将"''"转换为"/"。
您还可以在发送路径之前对路径进行 HTML 编码,以便字符串变为
http://localhost:57602/obitm.aspx?url=deaths%92Bakerd.htm'
尝试使用逐字字符串,以 @ 符号为前缀
string url = @"http://localhost:57602/obitm.aspx?url=deaths'bakerd.htm".Replace("''","/").ToString();
尝试thisurl = url.Replace("''", "/");
就像在javascript中一样。
要解析查询字符串参数,您可以使用:
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
这里我们 MSDN 帮助
或者您可以:
HttpUtility.UrlEncode(Request.QueryString["url"]);