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, VSLANG
DOTNET_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.
Doporučená akce
- 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
aDOTNET_CLI_UI_LANGUAGE
zakázání této změny.