如何正确使用UrlEncode和Decode

2024-02-23

所以我有一个文件要上传到 azure blob 存储:

C:\测试文件夹\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%20folder\A+B\testfile.txt但是当我尝试将其作为文件路径恢复时,我得到test folder\A B\testfile.txt这显然不一样(+已被删除)

使用 UrlEncode 和 UrlDecode 来确保获得与原始编码相同的解码信息的正确方法是什么?


如果你使用的话它会起作用WebUtility.UrlEncode代替HttpUtility.UrlPathEncode

如果您查看有关 HttpUtility.UrlPathEncode 的文档 http://msdn.microsoft.com/en-us/library/system.web.httputility.urlpathencode%28v=vs.110%29.aspx你会看到它说:

不使用;仅用于浏览器兼容性。使用 URL 编码。

我编写了一个简单的示例,可以将其粘贴到控制台应用程序中(您需要引用 System.Web 程序集)

static void Main(string[] args)
{
    string filePath = @"C:\test folder\A+B\testfile.txt";
    var encoded = WebUtility.UrlEncode(filePath.Replace('\\', '/'));
    var decoded = WebUtility.UrlDecode(encoded.Replace('/', '\\'));
    Console.WriteLine(decoded);
}

在这里运行它.NET 小提琴 https://dotnetfiddle.net/Fg6Pv4

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确使用UrlEncode和Decode 的相关文章

随机推荐

  • 如何获取发送到数据库的准备好的查询

    当使用像这样的数据库库时pyodbc http code google com p pyodbc 实施Python 数据库 API 规范 http www python org dev peps pep 0249 应用参数替换后如何获得完全
  • 从 do 块返回查询

    我想做的就是能够使用do块设置一些变量 然后返回一个查询STDOUT使用这些变量 DO DECLARE book name TEXT DECLARE book slug TEXT BEGIN book name Ise Monogatari
  • Ruby Gem 开发 - 如何使用 ActiveRecord?

    我目前正在尝试开发我的第一个红宝石宝石 但我已经陷入困境 我使用 bundle gem 命令创建基本结构并阅读了一些教程 但我找不到如何集成 ActiveRecord 我在哪里创建迁移 我是在 lib 文件夹中还是在根目录中创建 db mi
  • UIButtons 的 IBOutletCollection - 更改按钮的选定状态

    我在视图中遇到多个 UIButton 的问题 我希望单独选择按钮 一次选择多个按钮 例如 10 个按钮 选择按钮 1 4 5 9 在我的标头中 我有一个 IBOutletCollection 属性 property retain nonat
  • 如果MySQL数据库没有关闭会发生什么?

    如果MySQL数据库没有关闭会发生什么 我们如何知道它是否正确关闭 我确实有一个页面 页面上有 11 个表 所以我所做的是在脚本开始之前在页面顶部打开数据库 并在脚本 PHP 结束的地方关闭 结尾是 mysql close db 这足够公平
  • UIBarButtonItem 如何禁用辅助功能 (iOS)

    SO 我正在尝试禁用已添加到 UINavigationController 的 leftBarButtonItems 中的 UIBarButtonItem 的 VoiceOver 可访问性 虽然我可以为没有标题的按钮禁用它 但我似乎无法为有
  • 如何在 symfony2 的表单类中隐藏标签?

    我知道您可以在树枝中拆分表单并选择不渲染特定字段的标签 但我忍不住认为您必须能够从表单类中执行此操作 选项数组中的 label 键允许您将此值更改为您喜欢的任何值 但传递 false 或空字符串只会返回字段名称 请参阅下面的示例 其中 ro
  • USB 驱动程序 华硕 Nexus 7 Windows 7

    我已经尝试了该网站和其他许多网站上的所有建议 但均无济于事 甚至可以在 Windows 上为 Nexus 7 进行 Android 开发吗 我试过从sdk管理器下载的usb驱动 华硕的那个 我已尝试将 USB 模式更改为 PTP 但仍然收到
  • 当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持在原位?

    我有一个想要实现的身体系统功能 当用户将鼠标悬停在身体 部位上时 它会突出显示并显示该特定身体部位的信息 我已经按照我想要的方式编写了 CSS 代码 但是我对 JavaScript 一无所知当单击身体部位或鼠标离开悬停状态时 获取要粘贴的信
  • MIPS 左加载字 (LWL) 和右加载字 (LWR) 指令的作用是什么?

    最近我一直在研究 MIPS 指令集 当时我遇到了两个在其他指令集中没有见过的不寻常指令 我环顾四周 想找到一个关于指令到底做什么的合理解释 但我所能弄清楚的是 它们在某种程度上与未对齐的内存访问有关 例如 维基百科说 https en wi
  • 膨胀类 android.widget.listview 时出错

    我浏览了很多其他人的问题和解释 但没有什么对我有用 我的程序的第一个活动 ListActivity 在膨胀其 xml 文件时遇到问题 LogCat 输出为 08 01 08 36 17 800 E AndroidRuntime 1935 F
  • statsmodels 如何编码以字符串形式输入的 endog 变量?

    我是使用 statsmodels 进行统计分析的新手 我大多数时候都会得到预期的答案 但有些事情我不太明白 statsmodels 在以字符串形式输入时定义逻辑回归的 endog 依赖 变量的方式 可以定义如下所示的示例 Pandas 数据
  • 在 asp.net mvc 项目中添加列到创建的标识表?

    我在我的 MVC 5 项目中使用 Identity 2 0 当我第一次在数据库中运行该项目时 已创建所有用于身份验证和授权的默认表 在 AspNetUsers 表中 我需要创建名为 LoyoutId 的整数类型的附加列 我的问题是如何向创建
  • 如何测试需要jquery的ES6类?

    我有一个需要 jquery 的 ES6 模块 import from jquery export class Weather Constructor for Weather class param latitude param longit
  • 是否可以使用 python 安装 msi?

    是否可以用 python 编写一个安装 msi 的脚本 或者 是否可以通过任何其他脚本来实现 您可以使用过时的操作系统 http docs python org library os html highlight os system os
  • 应用程序获得 Amazon AppStore 批准需要多长时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 申请被审查的平均时间是多少亚马逊应用商店 https developer amazon com 小型 无争议 优质的应用程序 在 Android 市场
  • ASP.NET MVC3 和 Facebook 集成

    我正要使用 MVC3 启动一个新的 ASP NET 项目 并且由于一些要求与 facebook 集成有关 因此我需要您就以下问题提供建议 1 是否可以将我的会员用户连接到他们的 Facebook 帐户 以便每当用户在我的网站上分享 添加 评
  • 有没有办法在 Android 中定义 EditText 的最小值和最大值?

    我想定义一个最小值和最大值EditText 例如 如果有人尝试在其中输入月份值 则该值必须在 1 12 之间 我可以通过使用来做到这一点TextWatcher但我想知道是否有其他方法可以在布局文件或其他地方执行此操作 编辑 我不想限制字符数
  • Java中的char和Character有什么区别?

    我需要知道Java中的char和Character有什么区别 因为当我编写java程序时 char可以工作 而Character却不起作用 char 是表示单个 16 位 Unicode 字符的原始类型 而 Character 是一个包装类
  • 如何正确使用UrlEncode和Decode

    所以我有一个文件要上传到 azure blob 存储 C 测试文件夹 A B testfile txt 以及两个扩展方法 可帮助对我的路径进行编码 以确保为其提供有效的 azure 存储 blob 名称 public static stri