共用方式為


主控台編碼完成後不會保持 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。

另請參閱