将Web文件保存到具有非法字符的磁盘时进行编码

时间:2012-09-02 12:27:08

标签: c# file-io

我正在从网上下载文件并将其保存在磁盘上。这很容易,但是一些Web文件中包含的字符在将文件保存到磁盘时是不允许的。最值得注意的是,当我下载文件时,例如 script.js?something = somethingelse

我已经发现this帖子涉及删除非法字符,但我不想这样做。我想以某种方式编码文件名,以便当我从磁盘加载文件时我可以解码它,我将再次使用原始名称。

我发现this页面描述了哪些字符不被允许,但它有点模糊,正如它提到的那样

  

目标文件系统不允许的任何其他字符。

到目前为止我想出的是使用HttpUtility.UrlEncode来做这件事似乎工作正常。我担心它不是'正确的',并且在某些情况下会失败。那么有人知道完成这个的“正确”方式吗?

1 个答案:

答案 0 :(得分:0)

HttpUtility.UrlEncode对于大多数用途来说已经足够好了。您还有System.Net.WebUtility.UrlEncodeUrlDecode,它们的优点是不需要引用System.Web程序集(例如,不是紧凑框架的一部分),但它仅在.Net 4.5中可用

但是,如果您担心安全性,请考虑AntiXSS,它是Microsoft Web Protection Library的一部分。如果涵盖更多案例,例如转义包含在javascript字符串中的数据,以及白名单支持。