我正在将编码的字符串读入内存并对其进行解码。 该字符串类似于“test \ file1.txt”。
通常情况下,C#会将其视为字符串文字“test \\ file1.txt”,正确地将转义字符分配给反斜杠字符。
在这种情况下,C#将斜杠视为f文件的转义字符。 ( “\ F”)。
我不能使用替换(@“\”,@“\”)字符串的方法,因为C#找不到“\”,它只找到“\ f”。文件名是完全可变的,所以我不能使用替换(@“\ f”,@“\ f”) ......
如何继续使用此内存中字符串并添加斜杠,以便字符串是有效路径?
该字符串只是从文本文件加载并通过解码器传递。
public static string Decode(string inp)
{
byte[] ToDecode = System.Convert.FromBase64String(inp);
return System.Text.ASCIIEncoding.UTF8.GetString(ToDecode);
}
这是我实际使用字符串的地方(称为'A')
foreach (string A in Attchmnts)
Msg.Attachments.Add(new Attachment(_AttachmentsPath + @"\" + A));
如果我通过立即检查附件的内容,结果如下:
?_AttachmentsPath + @"\" + A
"\\\\BUPC1537\\MailServer\\Attachments\\test\file2.txt"
我已通过立即调用以下方法手动编码字符串(然后将该数据粘贴到XML文档中):
public static string Encode(string inp)
{
byte[] ToEncode = System.Text.ASCIIEncoding.UTF8.GetBytes(inp);
return System.Convert.ToBase64String(ToEncode);
}
//Immediate code
?Utils.Encoder.Encode("test\file2.txt")
"dGVzdAxpbGUyLnR4dA=="
答案 0 :(得分:3)
正如我一直怀疑的那样,创建文件的代码无法正确地转义反斜杠。
通过使用逐字字符串来修复它:
Utils.Encoder.Encode(@"test\file2.txt")
或通过显式转义反斜杠:
Utils.Encoder.Encode("test\\file2.txt")