public static string fileNameToUriName(string name)
{
int len = name.Length;
StringBuilder s = null;
for (int i=0; i<len; ++i)
{
int c = name[i];
switch (c)
{
case '?':
case '#':
if (s == null) { s = new StringBuilder(); s.Append(name, 0, i); }
s.Append('\\').Append((char)c);
break;
default:
if (s != null) s.Append((char)c);
break;
}
}
return s == null ? name: s.ToString();
}