zoukankan      html  css  js  c++  java
  • Web里URL空格的转换方法

    今天收到一个Bug修复的任务,Bug为在页面上输入一个文件夹名包含空格,点击该文件夹的URL后链接错误。

    看URL是HttpUtility.UrlEncode将空格转换成了“+”号,原因找到就着手解决Bug。

    fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8); 

    fileName = fileName.Replace("+", "%20"); 

    通过Replace替换解决,虽然问题解决了,但这并不是一个很好的方法,如果文件夹或文件名中包含“+”号则会导致另外的Bug发生。
    最佳解决方案:

      使用HttpUtility.UrlPathEncode,UrlPathEncode 方法执行下列步骤:

        1.将 UrlPathEncode 方法的编码逻辑只应用于 URL 的路径部分(不包括查询字符串)。 该方法假定 URL 被编码为 UTF-8 字符串。

        2.对非空格编码,以便在所得的编码字符串中使用前 128 个 ASCII 字符的子集。 Unicode 的所有字符值为 128 及更高,或者 32 和更小, URL 中输入。

        3.输入空格作为 %20。

      使用 UrlEncode 方法或 UrlPathEncode 方法,可以输入 URL。 但是,方法返回不同的结果。 UrlEncode 方法将每个空格字符转换为加号 (+) 字符。 UrlPathEncode 方法将每个空格字符转换为字符串 %20,以十六进制表示法表示的一个空格。 在对 URL 的路径部分编码时使用 UrlPathEncode 方法,以保证一致的已解码 URL,与执行解码的平台或浏览器无关。 当您使用 UrlPathEncode 方法时,查询字符串值不会输入。 因此,可通过问号的任何值 (?) 在字符串,将不会输入。 如果必须通过 URL,当查询字符串,则使用 UrlEncode 方法。

      看到项目中很多页面都使用了Replace方式,查询后全部替换为UrlPathEncode减少更多Bug的发生。

  • 相关阅读:
    51nod 1179 最大的最大公约数 (数论)
    POJ 3685 二分套二分
    POJ 3045 贪心
    LIC
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    HDU 2389 Rain on your Parade
    HDU 2819 Swap
    HDU 1281 棋盘游戏
    HDU 1083 Courses
  • 原文地址:https://www.cnblogs.com/sjqq/p/6497799.html
Copyright © 2011-2022 走看看