如果設定了 DOTNET_CLI_UI_LANGUAGE
或 VSLANG
環境變數,那麼 .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 提供不佳的體驗。
尚未使用 VSLANG
和 DOTNET_CLI_UI_LANGUAGE
變數的開發人員不會受到影響。 影響應該很小,因為在一開始此語言設定就因字元混亂而無法正常運作。 此外,只有使用 Windows 10 或更新版本的開發人員可能會受到影響,其中大部分可能使用 1909 版或更新版本。
前置情境不太可能支援已失效的語言,因此您不太可能想要使用可能導致失效的其他語言。
建議的動作
- 如果您使用舊版的 Windows 10,請升級至 1909 版或更新版本。
- 如果您想要使用舊版主控台,或因編碼變更而面臨組建問題或其他問題,請取消設定
VSLANG
並DOTNET_CLI_UI_LANGUAGE
停用此變更。