修复了 System.Uri 类中的一个 bug,以便在 Unix 平台上正确解析包含非 ASCII 字符的绝对 URI 路径。
更改描述
在早期版本的 .NET 中,包含非 ASCII 字符的绝对 URI 路径在 Unix 平台上被错误地分析,并且路径段重复。 (绝对路径是以“/”开头的路径)。.NET 5 已修复分析问题。 如果从旧版 .NET 迁移到 .NET 5 或更高版本,你将获得由Uri.AbsoluteUriUri.ToString()其他Uri成员生成的不同值。
在 Unix 上运行时,请考虑以下代码的输出。
var myUri = new Uri("/üri");
Console.WriteLine($"AbsoluteUri: {myUri.AbsoluteUri}");
Console.WriteLine($"ToString: {myUri.ToString()}");
上一个 .NET 版本的输出:
AbsoluteUri: /%C3%BCri/%C3%BCri
ToString: /üri/üri
.NET 5 或更高版本上的输出:
AbsoluteUri: /%C3%BCri
ToString: /üri
已引入的版本
5.0
建议的措施
如果你具有需要和说明重复路径段的代码,则可以删除该代码。