Kodowanie konsoli nie pozostaje utF-8 po zakończeniu

Usterka wymieniona w danych wyjściowych konsoli interfejsu wiersza polecenia używa zmiany powodującej niezgodność UTF-8 , gdzie zestaw .NET SDK zmienił kodowanie całej konsoli, został naprawiony. Kodowanie konsoli nie pozostaje już utF-8 po wykonaniu polecenia przez zestaw .NET SDK. Istnieje możliwość, że użytkownicy przyszli polegać na tym zachowaniu, dlatego jest to zmiana powodująca niezgodność.

Ponadto zestaw .NET SDK nie zmienia już kodowania na UTF-8 w starszych wersjach systemu Windows 10, które nie obsługują go w pełni.

Poprzednie zachowanie

  • Zestaw SDK zmienił kodowanie terminalu po uruchomieniu polecenia takiego jak dotnet build.
  • Zestaw SDK używał kodowania UTF-8 do poprawnego renderowania znaków innych niż angielski, nawet w wersjach systemu Windows 10, które nie obsługują oficjalnie utF-8. Zachowanie było niezdefiniowane w tych wersjach.

Nowe zachowanie

  • Zestaw SDK nie zmienia kodowania terminalu po zakończeniu działania innych programów.
  • Domyślnie zestaw SDK nie używa już formatu UTF-8 dla wersji systemu Windows, które nie obsługują go.

Wprowadzona wersja

7.0.3xx .NET 8 (wersja zapoznawcza 3)

Typ zmiany powodującej niezgodność

Ta zmiana może mieć wpływ na zgodność binarną. Jest to również zmiana behawioralna.

Przyczyna wprowadzenia zmiany

Wystąpiła istniejąca usterka polegająca na tym, że zestaw SDK platformy .NET miał wpływ na kodowanie w konsoli innych programów. To była usterka, która została usunięta, co spowodowało tę zmianę powodującą niezgodność.

Starsze wersje systemu Windows 10 (czyli wersje przed aktualizacją z listopada 2019 r.) nie obsługiwały kodowania UTF-8, więc domyślne zachowanie nie powinno być używane kodowania UTF-8. Zamiast tego dostępna jest zgoda.

Jeśli aplikacja musi zmienić stronę kodu w systemie Windows, może uruchomić proces wywoływania chcp polecenia. Aplikacja nie powinna polegać na zestawie .NET SDK, aby zmienić kodowanie.

W przypadku starszych wersji systemu Windows 10, które nie obsługują oficjalnie formatu UTF-8, w których chcesz, aby zestaw .NET SDK nadal zmieniał kodowanie na UTF-8 dla języków innych niż angielski, można ustawić zmienną środowiskową DOTNET_CLI_FORCE_UTF8_ENCODING na true wartość lub 1.

Zobacz też