在 Unix 上正确分析包含非 ASCII 字符的 URI 路径

System.Uri 类中修复了一个 bug,包含非 ASCII 字符的绝对 URI 路径现在可以在 Unix 平台上正确分析。

更改描述

在早期版本的 .NET 中,不能在 Unix 平台上正确分析包含非 ASCII 字符的绝对 URI 路径,并且会复制该路径的段。 (绝对路径是以“/”开头的路径。).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

如果你具有需要和说明重复路径段的代码,则可以删除该代码。

受影响的 API