Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The bug mentioned in the CLI console output uses UTF-8 breaking change, where the .NET SDK changed the encoding of the entire console, has been fixed. The console encoding no longer remains UTF-8 after the .NET SDK executes a command. It's possible that users came to rely on that behavior, hence this is a breaking change.
In addition, the .NET SDK no longer changes the encoding to UTF-8 on older Windows 10 versions that don't fully support it.
Previous behavior
- The SDK changed the encoding of a terminal after running a command such as
dotnet build
. - The SDK used the UTF-8 encoding to correctly render non-English characters, even on versions of Windows 10 that did not officially support UTF-8. The behavior was undefined on those versions.
New behavior
- The SDK doesn't change the terminal encoding after exit for other programs.
- By default, the SDK no longer uses UTF-8 for Windows versions that don't support it.
Version introduced
7.0.3xx .NET 8 Preview 3
Type of breaking change
This change can affect binary compatibility. It's also a behavioral change.
Reason for change
There was an existing bug where the .NET SDK affected the encoding on the console for other programs. That was a bug that was fixed, resulting in this breaking change.
Older versions of Windows 10 (that is, versions before the November 2019 update) didn't support UTF-8, so the default behavior shouldn't be to use UTF-8 encoding. Instead, an opt-in is now available.
Recommended action
If your app needs to change the code page on Windows, it can run a process to invoke the chcp
command. Your app shouldn't rely on the .NET SDK to change the encoding.
For older Windows 10 versions that don't officially support UTF-8 where you want the .NET SDK to continue to change the encoding to UTF-8 for non-English languages, can you set the environment variable DOTNET_CLI_FORCE_UTF8_ENCODING
to true
or 1.