Share via


具有非 ASCII 字元的 URL 路徑會在 Unix 上正確剖析

System.Uri 類別中的 Bug 已受到修正,所以包含非 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