如何将'\'更改为'/'

时间:2013-10-07 05:17:22

标签: c# javascript url browser

尝试访问C#程序后面的代码中的文件时,我的Web程序出错,目录名和文件名之间有反斜杠。该文件的地址进入我的网页,查询值为'deaths \ bakerd.htm'。但是,浏览器会将其转换为“deaths%08akerd.htm”。

网页中的网址为

 'http://localhost:57602/obitm.aspx?url=deaths%08akerd.htm' 

并说无法找到网页,但网页obitm.aspx确实存在,那为什么会说不呢?

如果我手动将Windows资源管理器中查询值的值更改为“deaths / bakerd.htm”,则在浏览器中作为查询值进入时,它不会进行任何转换,并且我可以访问该文件我的C#程序。

我尝试使用

更改javascript中的查询值
   thisurl = url.replace("\\", "/") 

但这并没有改变任何事情。

我的C#程序中没有尝试过任何转换。那么我如何以编程方式将'\'更改为'/'?我不知道为什么会这样,而且非常令人困惑。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:5)

只是将\ n转换为/在URL字符串中对您不起作用,因为在这种情况下,“\ b”将变为退格符,该符号将被编码到%08中 - 这是ASCII的十六进制值相当于退格字符。

要解决这一问题,您可以将“%08”转换为字符串“/ B”,但是对于各种字符有很多HTML codes,这对您来说不会有效或有趣

您从哪里获取包含文件名名称的原始字符串? 如果它是您可以控制的内容,则在读取文件的路径/名称时以及在将URL传递给Web App之前将“\”转换为“/”。

您也可以在发送之前对路径进行HTMLEncode,以便字符串变为

http://localhost:57602/obitm.aspx?url=deaths%92Bakerd.htm' 

答案 1 :(得分:2)

尝试使用@ symbol

前缀来使用逐字字符串
string url = @"http://localhost:57602/obitm.aspx?url=deaths\bakerd.htm".Replace("\\","/").ToString();

答案 2 :(得分:0)

尝试thisurl = url.Replace("\\", "/"); 就像在javascript中一样。

答案 3 :(得分:0)

要解析查询字符串参数,您可以使用:

NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);

Here us MSDN help

或者你可以:

HttpUtility.UrlEncode(Request.QueryString["url"]);