public static UnquoteFileName ( string fileName ) : string | ||
fileName | string | |
return | string |
public static string UnquoteFileName(string fileName)
{
char[] chars = fileName.ToCharArray();
IList<byte> blist = new List<byte>();
int i = 0;
StringBuilder sb = new StringBuilder();
while (i < chars.Length)
{
char c = chars[i];
if (c == '\\')
{
//there should be 3 digits
if (chars.Length >= i + 3)
{
string octNumber = "" + chars[i + 1] + chars[i + 2] + chars[i + 3];
try
{
int code = Convert.ToInt32(octNumber, 8);
blist.Add((byte)code);
i += 4;
}
catch (Exception)
{
}
}
}
else
{
if (blist.Count > 0)
{
sb.Append(SystemEncoding.GetString(blist.ToArray()));
blist.Clear();
}
sb.Append(c);
i++;
}
}
if (blist.Count > 0)
{
sb.Append(SystemEncoding.GetString(blist.ToArray()));
blist.Clear();
}
return sb.ToString();
}