Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se a DOTNET_CLI_UI_LANGUAGE variável de ambiente ou VSLANG for definida, a saída do console da CLI do .NET e a codificação de entrada serão alteradas para UTF-8, para que a página de código também possa ser alterada para UTF-8. Esse novo comportamento permite que caracteres de idiomas definidos por essas variáveis de ambiente sejam renderizados corretamente.
Essa alteração afeta apenas os sistemas operacionais Windows (a codificação estava bem em outras plataformas). Além disso, ela só se aplica ao Windows 10 e versões posteriores em que a cultura da interface do usuário definida pelo usuário não é em inglês.
Comportamento anterior
Caracteres em determinadas linguagens, incluindo chinês, alemão, japonês e russo, às vezes são exibidos como caracteres embaralhados ou como ? no console. Por exemplo:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
???????????????...
Novo comportamento
A partir do .NET 7 (versão 7.0.3xx) e do .NET 8, os caracteres são renderizados corretamente. A codificação e a página de código são alteradas. Por exemplo:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
正在确定要还原的项目…
Versões do Windows anteriores ao Windows 10 1909 não dão suporte total ao UTF-8 e podem ter problemas após essa alteração. (A partir do SDK do .NET 8 e do .NET 7.0.300, o SDK do .NET não altera mais a codificação para UTF-8 nessas versões, por padrão. Para optar por voltar a usar o UTF-8 mesmo em versões do Windows 10 que não dão suporte a ele, use a DOTNET_CLI_FORCE_UTF8_ENCODING variável de ambiente.)
Além disso, houve um bug existente em que o SDK pode afetar a codificação de outros comandos e programas chamados no mesmo prompt de comando após a conclusão da execução do SDK. Agora que o SDK altera com mais frequência a codificação, o impacto desse bug pode aumentar. No entanto, o bug foi corrigido no SDK do .NET 8 e do .NET 7.0.300. Para obter mais informações, consulte O SDK não altera mais a codificação do console após a conclusão.
Versão introduzida
7.0.3xx .NET 8 Versão Prévia 1
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade do código-fonte e a compatibilidade binária. Também é uma mudança comportamental.
Motivo da alteração
O uso da CLI do .NET em idiomas não ingleses proporcionou uma experiência ruim.
Desenvolvedores que já não estavam usando as variáveis VSLANG e DOTNET_CLI_UI_LANGUAGE não são afetados. O impacto deve ser mínimo, pois essa configuração de idioma não teria funcionado bem desde o início devido a caracteres ilegíveis. Além disso, somente os desenvolvedores que usam o Windows 10 ou posterior podem ser afetados, a maioria dos quais provavelmente estão usando a versão 1909 ou posterior.
Os cenários herdados já são menos propensos a dar suporte aos idiomas quebrados, portanto, é improvável que você queira usar outra linguagem que possa expor essa quebra de qualquer maneira.
Ação recomendada
- Se você estiver usando uma versão mais antiga do Windows 10, atualize para a versão 1909 ou posterior.
- Se você quiser usar um console legado ou estiver enfrentando problemas de build ou outros devido à mudança de codificação, desative
VSLANGeDOTNET_CLI_UI_LANGUAGEpara desabilitar essa mudança.