共用方式為


在 Unix 上正確剖析包含非 ASCII 字元的 URI 路徑

類別 System.Uri 中修正了一個錯誤,現在包含非 ASCII 字元的絕對 URI 路徑能在 Unix 平臺上正確解析。

變更描述

在 .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

如果您有預期並處理重複路徑區段的程式碼,您可以移除該程式碼。

受影響的 API