Поделиться через


Кодировка консоли не остается UTF-8 после завершения

Ошибка, упоминание в выходных данных консоли CLI, использует критическое изменение UTF-8, где пакет SDK для .NET изменил кодировку всей консоли, был исправлен. Кодировка консоли больше не остается UTF-8 после выполнения команды пакета SDK для .NET. Возможно, что пользователи пришли полагаться на это поведение, поэтому это критическое изменение.

Кроме того, пакет SDK для .NET больше не изменяет кодировку на UTF-8 в более ранних версиях Windows 10, которые не полностью поддерживают его.

Прежнее поведение

  • Пакет SDK изменил кодировку терминала после выполнения команды, например dotnet build.
  • Пакет SDK использовал кодировку UTF-8 для правильной отрисовки символов, отличных от английского языка, даже в версиях Windows 10, которые официально не поддерживали UTF-8. Поведение не определено в этих версиях.

Новое поведение

  • Пакет SDK не изменяет кодировку терминала после выхода из других программ.
  • По умолчанию пакет SDK больше не использует UTF-8 для версий Windows, которые не поддерживают его.

Представленные версии

7.0.3xx .NET 8( предварительная версия 3)

Тип критического изменения

Это изменение может повлиять на совместимость двоичного кода. Это также изменение поведения.

Причина изменения

Возникла ошибка, из-за которой пакет SDK для .NET повлиял на кодировку в консоли для других программ. Это была ошибка, которая была исправлена, что привело к критическому изменению.

Старые версии Windows 10 (т. е. версии до обновления за ноябрь 2019 г.) не поддерживали UTF-8, поэтому поведение по умолчанию не должно использоваться кодировкой UTF-8. Вместо этого теперь доступно согласие.

Если приложению необходимо изменить кодовую страницу в Windows, он может запустить процесс для вызова chcp команды. Ваше приложение не должно полагаться на пакет SDK для .NET, чтобы изменить кодировку.

Для более старых версий Windows 10, которые официально не поддерживают UTF-8, где требуется, чтобы пакет SDK для .NET продолжал изменять кодировку на UTF-8 для языков, отличных от английского языка, можно задать для переменной DOTNET_CLI_FORCE_UTF8_ENCODINGtrue среды значение или 1.

См. также