Výstup konzoly CLI používá UTF-8

DOTNET_CLI_UI_LANGUAGE Pokud je nastavena proměnná prostředí, VSLANG výstup konzoly .NET CLI a kódování vstupu se změní na UTF-8, aby se znaková stránka také změnila na UTF-8. Toto nové chování umožňuje správné vykreslení znaků z jazyků nastavených těmito proměnnými prostředí.

Tato změna má vliv jenom na operační systémy Windows (kódování bylo v pořádku na jiných platformách). Kromě toho platí jenom pro Windows 10 a novější verze, kde jazyková verze uživatelského rozhraní nastavená uživatelem není angličtina.

Předchozí chování

Znaky v určitých jazycích, včetně čínštiny, němčiny, japonštiny a ruštiny, se někdy zobrazují jako zkomolené znaky nebo jako ? v konzole. Příklad:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  ???????????????...

Nové chování

Od verze .NET 7 (verze 7.0.3xx) a .NET 8 se znaky vykreslují správně. Kódování i změna znakové stránky. Příklad:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  正在确定要还原的项目…

Verze Windows starší než Windows 10 1909 plně nepodporují UTF-8 a můžou po této změně narazit na problémy. (Počínaje sadou .NET 8 a .NET 7.0.300 SDK už sada .NET SDK ve výchozím nastavení nezmění kódování na UTF-8. Pokud chcete vyjádřit výslovný souhlas s používáním UTF-8 i ve verzích Windows 10, které ho nepodporují, použijte proměnnou DOTNET_CLI_FORCE_UTF8_ENCODING prostředí.)

Kromě toho došlo k existující chybě , kdy sada SDK může ovlivnit kódování jiných příkazů a programů volaných na stejném příkazovém řádku po dokončení spuštění sady SDK. Teď, když sada SDK častěji mění kódování, může dojít ke zvýšení dopadu této chyby. Byla však opravena chyba v sadě .NET 8 a .NET 7.0.300 SDK. Další informace najdete v tématu Sada SDK, která po dokončení nezmění kódování konzoly.

Zavedená verze

7.0.3xx .NET 8 Preview 1

Typ zásadní změny

Tato změna může ovlivnit kompatibilitu zdroje a binární kompatibilitu. Jedná se také o změnu chování.

Důvod změny

Použití rozhraní příkazového řádku .NET v neanglických jazycích poskytuje špatné prostředí.

Vývojáři, kteří ještě nepoužávali, VSLANGDOTNET_CLI_UI_LANGUAGE a proměnné nejsou ovlivněné. Dopad by měl být minimální, protože toto nastavení jazyka by nefungovalo dobře na prvním místě z důvodu zkomolených znaků. Může to mít vliv jenom na vývojáře používající Windows 10 nebo novější, z nichž většina pravděpodobně používá verzi 1909 nebo novější.

Starší scénáře už méně pravděpodobné podporují nefunkční jazyky, takže pravděpodobně nebudete chtít použít jiný jazyk, který by mohl tuto přestávku přesto vystavit.

  • Pokud používáte starší verzi Windows 10, upgradujte na verzi 1909 nebo novější.
  • Pokud chcete použít starší konzolu nebo dochází k problémům se sestavením nebo jiným uživatelům kvůli změně kódování, zrušení nastavení VSLANG a DOTNET_CLI_UI_LANGUAGE zakázání této změny.

Viz také