Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli zmienna środowiska DOTNET_CLI_UI_LANGUAGE lub VSLANG jest ustawiona, kodowanie danych wyjściowych i wejściowych konsoli interfejsu wiersza polecenia platformy .NET zmienia się na UTF-8, co pozwala na zmianę strony kodowej również na UTF-8. To nowe zachowanie umożliwia poprawne renderowanie znaków z języków ustawionych przez te zmienne środowiskowe.
Ta zmiana dotyczy tylko systemów operacyjnych Windows (kodowanie było w porządku na innych platformach). Ponadto dotyczy tylko systemu Windows 10 i nowszych wersji, w których kultura interfejsu użytkownika ustawiona przez użytkownika jest nieanglojęzyczna.
Poprzednie zachowanie
Znaki w niektórych językach, w tym chińskim, niemieckim, japońskim i rosyjskim, czasami są wyświetlane jako nieczytelne znaki lub jako ? w konsoli. Przykład:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
???????????????...
Nowe zachowanie
Począwszy od platformy .NET 7 (wersja 7.0.3xx) i .NET 8, znaki są renderowane poprawnie. Zarówno kodowanie, jak i strona kodowa zmieniają się. Przykład:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
正在确定要还原的项目…
Wersje systemu Windows starsze niż Windows 10 1909 nie obsługują w pełni utF-8 i mogą wystąpić problemy po tej zmianie. (Począwszy od zestawu .NET 8 i .NET 7.0.300 SDK, zestaw .NET SDK nie zmienia już kodowania na UTF-8 w tych wersjach. Aby wrócić do korzystania z utF-8 nawet w wersjach systemu Windows 10, które nie obsługują go, użyj zmiennej środowiskowej DOTNET_CLI_FORCE_UTF8_ENCODING .
Ponadto wystąpiła istniejąca usterka polegająca na tym, że zestaw SDK może wpływać na kodowanie innych poleceń i programów wywoływanych w tym samym wierszu polecenia po zakończeniu wykonywania zestawu SDK. Teraz, gdy zestaw SDK częściej zmienia kodowanie, wpływ tej usterki może wzrosnąć. Usterka została jednak usunięta w zestawach .NET 8 i .NET 7.0.300 SDK. Aby uzyskać więcej informacji, zobacz Zestaw SDK nie zmienia już kodowania konsoli po zakończeniu.
Wersja wprowadzona
7.0.3xx .NET 8 (wersja zapoznawcza 1)
Typ zmiany przełamującej
Ta zmiana może mieć wpływ na zgodność źródła i zgodność binarną. Jest to również zmiana behawioralna.
Przyczyna zmiany
Używanie .NET CLI w językach innych niż angielski dostarczało kiepskie wrażenia użytkowe.
Deweloperzy, którzy nie używali jeszcze zmiennych VSLANG i DOTNET_CLI_UI_LANGUAGE nie mają wpływu na te zmienne. Wpływ powinien być minimalny, ponieważ to ustawienie języka nie działało dobrze w pierwszej kolejności z powodu niezwiązanych znaków. Ponadto może to mieć wpływ tylko na deweloperów korzystających z systemu Windows 10 lub nowszego, z których większość prawdopodobnie korzysta z wersji 1909 lub nowszej.
Scenariusze odziedziczone raczej nie obsługują uszkodzonych języków, więc jest mało prawdopodobne, że byś chciał użyć innego języka, który może ujawnić mimo to tę usterkę.
Zalecana akcja
- Jeśli używasz starszej wersji systemu Windows 10, przeprowadź uaktualnienie do wersji 1909 lub nowszej.
- Jeśli chcesz używać starszej konsoli lub masz problemy z kompilacją lub inne trudności ze względu na zmianę kodowania, wyłącz tę zmianę, dezaktywując
VSLANGiDOTNET_CLI_UI_LANGUAGE.