我在C#中进行编码,并且我有一个文件的URI(可以是UNC,网络服务等,这就是我需要使用URI的原因)而且我跑了一个URI指向名称中包含#
的文件的情况。
然后将URI解释为碎片化的uri.Fragment
不为空并且uri.LocalPath
被破坏,指向由URI表示直到散列的假设位置。
#
是文件名的一部分吗?答案 0 :(得分:3)
您可以使用System.UriBuilder
类。
UriBuilder builder1 = new UriBuilder("http://yourdomain.com/");
builder1.Path = @"hello world#シンガポール国.txt";
Uri url1 = builder1.Uri;
System.Diagnostics.Debug.WriteLine(url1.ToString());
// -> http://yourdomain.com/hello world%23シンガポール国.txt
System.Diagnostics.Debug.WriteLine(url1.LocalPath);
// -> /hello world#シンガポール国.txt
在这种情况下,Fragment
属性保持空白。 Uri
的URL格式将转义哈希字符,因为它在该用法中具有特殊含义。 LocalPath
属性将保留哈希字符而不对其进行编码,因为它在该上下文中是合法的。