主控台編碼完成後不會保持 UTF-8
已修正 CLI 主控台輸出使用 UTF-8 中斷性變更所提及的錯誤:.NET SDK 變更整個主控台的編碼方式。 .NET SDK 執行命令之後,主控台編碼不再保持 UTF-8。 使用者可能已對該行為產生依賴,因此這是中斷性變更。
此外,.NET SDK 不再將舊版 Windows 10 不支援的編碼變更為 UTF-8。
先前的行為
- SDK 在執行
dotnet build
等命令後會變更終端的編碼方式。 - SDK 會使用 UTF-8 編碼來正確轉譯非英文字元,即使在未正式支援 UTF-8 的 Windows 10 版本上也一樣。 這些版本上未定義該行為。
新的行為
- SDK 不會在其他程式結束之後變更終端編碼。
- 根據預設,SDK 不再針對不支援 UTF-8 的 Windows 版本使用該編碼格式。
導入的版本
7.0.3xx .NET 8 Preview 3
中斷性變更的類型
變更原因
先前有一個錯誤會導致 .NET SDK 會影響其他程式在主控台上的編碼。 這個錯誤已經修正,並導致這項中斷性變更。
舊版 Windows 10 (也就是 2019 年 11 月更新之前的版本) 不支援 UTF-8,因此預設行為不應使用 UTF-8 編碼。 相反地,現已提供加入選項。
建議的動作
如果您的應用程式需要變更 Windows 上的字碼頁,可以執行程序來叫用 chcp
命令。 您的應用程式不應該依賴 .NET SDK 來變更編碼。
對於未正式支援 UTF-8 的較舊 Windows 10 版本,如果希望 .NET SDK 繼續將非英文語言的編碼變更為 UTF-8,您可以將環境變數 DOTNET_CLI_FORCE_UTF8_ENCODING
設定為 true
或 1。