共用方式為


CLI 主控台輸出使用 UTF-8

如果設定了 DOTNET_CLI_UI_LANGUAGEVSLANG 環境變數,那麼 .NET CLI 控制台的輸出和輸入編碼都會變更為 UTF-8,從而代碼頁也能變更為 UTF-8。 這個新行為可讓這些環境變數所設定的語言字元正確轉譯。

這項變更只會影響 Windows作系統(其他平臺上的編碼方式沒問題)。 此外,它只適用於使用者設定的UI文化特性為非英文的Windows 10和更新版本。

先前的行為

特定語言的字元,包括中文、德文、日文和俄文,有時會在控制台中顯示為亂碼字元或顯示為?。 例如:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  ???????????????...

新行為

從 .NET 7(版本 7.0.3xx)和 .NET 8 開始,字元會正確顯示。 編碼和代碼頁都會變更。 例如:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  正在确定要还原的项目…

比 Windows 10 1909 還舊的 Windows 版本未完全支援 UTF-8,而且在這項變更之後可能會遇到問題。 (從 .NET 8 和 .NET 7.0.300 SDK 開始,根據預設,.NET SDK 不再將這些版本的編碼變更為 UTF-8。若要在不支援UTF-8的 Windows 10 版本上選擇使用UTF-8,請使用 DOTNET_CLI_FORCE_UTF8_ENCODING 環境變數。

此外,存在一個現有的錯誤,即 SDK 在完成執行後,可能會影響在相同命令提示字元中呼叫的其他命令和程式的編碼。 現在 SDK 更頻繁地變更編碼方式,這個 Bug 的影響可能會增加。 不過,Bug 已在 .NET 8 和 .NET 7.0.300 SDK 中修正。 如需詳細資訊,請參閱 SDK 在完成之後不再變更主控台編碼

推出的版本

7.0.3xx .NET 8 Preview 1

破壞性變更的類型

這項變更可能會影響 來源相容性二進位相容性。 這也是 行為改變

變更的原因

使用非英文語言的 .NET CLI 提供不佳的體驗。

尚未使用 VSLANGDOTNET_CLI_UI_LANGUAGE 變數的開發人員不會受到影響。 影響應該很小,因為在一開始此語言設定就因字元混亂而無法正常運作。 此外,只有使用 Windows 10 或更新版本的開發人員可能會受到影響,其中大部分可能使用 1909 版或更新版本。

前置情境不太可能支援已失效的語言,因此您不太可能想要使用可能導致失效的其他語言。

  • 如果您使用舊版的 Windows 10,請升級至 1909 版或更新版本。
  • 如果您想要使用舊版主控台,或因編碼變更而面臨組建問題或其他問題,請取消設定 VSLANGDOTNET_CLI_UI_LANGUAGE 停用此變更。

另請參閱