c# - 具有哈希和 Uri LocalPath 处理的文件名

标签 c# file uri special-characters

我正在用 C# 进行编码,并且有一个文件的 URI(可以是 UNC、网络服务等,这就是我需要使用 URI 的原因),并且我遇到了 URI 指向名称中包含 # 的文件。

然后,URI 被解释为分段的一个 uri.Fragment 不为空,并且 uri.LocalPath 已损坏,指向由 URI 表示的假设位置,最多可达哈希值。

  1. 有没有办法让 Uri 类“理解”# 是文件名的一部分?
  2. 如果不是,如何很好地处理这个问题,因为我的例子中的片段包含更多特殊字符(汉字)并被转义,因此简单的字符串操作是不够的。

最佳答案

您可以使用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 形式将对 hash 字符进行转义,因为它在该用法中具有特殊含义。 LocalPath 属性将保留 hash 字符而不对其进行编码,因为它在该上下文中是合法的。

关于c# - 具有哈希和 Uri LocalPath 处理的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24366208/

相关文章:

c# - 基于 .NET 服务器的 PDF 生成

c - 在c中打印出数据文件是完全错误的

windows-phone-7 - 在 WebClient wp7 中重定向时获取当前 Uri

C#如何使用Uri equal?

php - 重定向到不允许的字符

c# - "Primitive types"与 "built-in value types"

c# - 第二个 await 没有在方法中返回正确的值

c# - 在 C# 中等待 Excel Interlop 退出

c++ - 查找目录及其子目录中的所有文件

javascript - 如何在内存中创建文件供用户下载,而不是通过服务器?