【问题标题】:How do I change a '\' to a '/'如何将“\”更改为“/”
【发布时间】:2013-10-13 14:17:06
【问题描述】:

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

网页中的url为

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

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

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

我尝试使用

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

但这并没有改变任何东西。

我没有在我的 C# 程序中尝试过任何转换。那么如何以编程方式将“\”更改为“/”?我不知道为什么会发生这种情况并且非常混乱。任何帮助表示赞赏。

【问题讨论】:

    标签: c# javascript url browser


    【解决方案1】:

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

    NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
    

    Here us MSDN help

    或者你可以:

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

    【讨论】:

      【解决方案2】:

      尝试使用带有@符号前缀的逐字字符串

      string url = @"http://localhost:57602/obitm.aspx?url=deaths\bakerd.htm".Replace("\\","/").ToString();
      

      【讨论】:

      • +1。或者如果字符串来自 JavaScript - "death\\bakerd.htm" (\b 是代码 8 的单个字符,既不是 ` nor /`)
      【解决方案3】:

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

      要解决这一问题,您可以将“%08”转换为字符串“/B”,但有很多 HTML codes 用于各种字符,您尝试这些字符不会有成效或乐趣。

      你从哪里得到包含文件名的原始字符串? 如果它是您可以控制的,那么在您读取文件的路径/名称时以及在将其以 URL 传递给 Web 应用程序之前,将“\”转换为“/”。

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

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

      【讨论】:

      • 感谢那些做出回应但没有任何帮助的人。我在 javascript 中进行以下转换: function getthisObit(url) { window.location = "obitm.aspx?url=" + url.replace("\\", "/");;我在obitm.aspx 脚本中添加了一个警报,但它永远不会到达那里。相反,它给出了错误消息,并且它永远不会到达我可以进一步编辑它的 C# 程序。所以我无法在javascript中转换'\',浏览器给我一个错误,说它是一个无效的url,即使url是好的,只是查询数据是错误的。
      • 能否在调用 getthisObit() 之前添加显示如何获取 url 的代码...
      • 感谢您的启发。在构建包含链接的页面时,我在我的 C# 程序中进行了转换,它解决了问题。在我的 C# 程序中,我在构建页面时这样做了:finalrecord = finalrecord.Replace("\\", "/");所以现在当我点击它来获取链接时,它已经是正确的格式了。因此,“\\”到“/”的转换在 C# 中有效,但在 javascript 中无效。感谢您的帮助。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-30
        • 2014-11-23
        • 2018-11-03
        • 2010-11-26
        • 2012-07-01
        • 2012-10-19
        • 2019-08-06
        • 2013-08-16
        相关资源
        最近更新 更多