*| ) HttpUtiliy.UrlEncode完成它的工作,除了它不编码 *性格。 我能找到的只是-6ren">
gpt4 book ai didi

C#文件路径编解码

转载 作者:行者123 更新时间:2023-12-05 09:24:14 24 4
gpt4 key购买 nike

我正在寻找一种简单的方法来编码/转义和解码/取消转义文件路径(文件路径中的非法字符 "\/?:<>*| )

HttpUtiliy.UrlEncode完成它的工作,除了它不编码 *性格。

我能找到的只是用正则表达式转义,或者只是用 _ 替换非法字符

我希望能够一致地编码/解码。

我想知道是否有预定义的方法来做到这一点,或者我只需要编写一些代码进行编码和另一段代码进行解码。

谢谢

最佳答案

我以前从来没有尝试过这样的事情,所以我把它放在一起:

static class PathEscaper
{
static readonly string invalidChars = @"""\/?:<>*|";
static readonly string escapeChar = "%";

static readonly Regex escaper = new Regex(
"[" + Regex.Escape(escapeChar + invalidChars) + "]",
RegexOptions.Compiled);
static readonly Regex unescaper = new Regex(
Regex.Escape(escapeChar) + "([0-9A-Z]{4})",
RegexOptions.Compiled);

public static string Escape(string path)
{
return escaper.Replace(path,
m => escapeChar + ((short)(m.Value[0])).ToString("X4"));
}

public static string Unescape(string path)
{
return unescaper.Replace(path,
m => ((char)Convert.ToInt16(m.Groups[1].Value, 16)).ToString());
}
}

它将任何禁止使用的字符替换为 %,后跟其 16 位十六进制表示,然后返回。 (对于您拥有的特定字符,您可能可以使用 8 位表示,但我认为为了安全起见我会犯错。)

关于C#文件路径编解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com