如何正确使用UrlEncode和Decode
所以我有一个文件,我上传到azure blob存储:
C: test文件夹 A + B testfile.txt
和两个扩展方法,帮助编码我的路径,以确保它被赋予有效的azure存储blob名称
public static string AsUriPath(this string filePath) { return System.Web.HttpUtility.UrlPathEncode(filePath.Replace('\', '/')); } public static string AsFilePath(this string uriPath) { return System.Web.HttpUtility.UrlDecode(uriPath.Replace('/', '\')); }
因此,当上传文件时,我将其编码为AsUriPath
并获取名称test%20folderA+Btestfile.txt
但是当我尝试将其作为文件路径返回时,我得到test folderABtestfile.txt
,这显然不是相同( +
已被删除)
使用UrlEncode和UrlDecode确保您获得与最初编码相同的信息的正确方法是什么?
如果你使用WebUtility.UrlEncode
而不是HttpUtility.UrlPathEncode
它的工作原理
如果您查看HttpUtility.UrlPathEncode上的文档,您会看到它指出:
不使用; 仅用于浏览器兼容性。 使用UrlEncode。
我编写了一个简单的例子,可以粘贴到控制台应用程序中(你需要引用System.Web程序集)
static void Main(string[] args) { string filePath = @"C:test folderA+Btestfile.txt"; var encoded = WebUtility.UrlEncode(filePath.Replace('\', '/')); var decoded = WebUtility.UrlDecode(encoded.Replace('/', '\')); Console.WriteLine(decoded); }
在这个.NET Fiddle上运行它
使用System.Uri类正确编码路径: MSDN System.Uri
在您的路径上尝试以下操作并使用调试器检查:
上述就是C#学习教程:如何正确使用UrlEncode和Decode分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var myUri = new System.Uri("https://someurl.com/my special path + is this/page?param=2"); var thePathAndQuery = myUri.PathAndQuery; var theAbsolutePath = myUri.AbsolutePath; var theAbsoluteUri = myUri.AbsoluteUri;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/983042.html