Web⾥URL空格的转换⽅法
看URL是HttpUtility.UrlEncode将空格转换成了“+”号,原因到就着⼿解决Bug。
引⽤:
复制代码代码如下:
fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);
fileName = fileName.Replace("+", "%20");url编码和utf8区别
通过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的发⽣。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论