A codificação do console não permanece UTF-8 após a conclusão
O bug mencionado na saída do console da CLI usa a alteração de quebra UTF-8 , onde o SDK do .NET alterou a codificação de todo o console, foi corrigido. A codificação do console não permanece mais UTF-8 depois que o SDK do .NET executa um comando. É possível que os usuários tenham confiado nesse comportamento, portanto, esta é uma mudança de rutura.
Além disso, o SDK do .NET não altera mais a codificação para UTF-8 em versões mais antigas do Windows 10 que não oferecem suporte total.
Comportamento anterior
- O SDK alterou a codificação de um terminal depois de executar um comando como
dotnet build
. - O SDK usou a codificação UTF-8 para renderizar corretamente caracteres não ingleses, mesmo em versões do Windows 10 que não suportavam oficialmente UTF-8. O comportamento foi indefinido nessas versões.
Novo comportamento
- O SDK não altera a codificação do terminal após a saída para outros programas.
- Por padrão, o SDK não usa mais UTF-8 para versões do Windows que não oferecem suporte a ele.
Versão introduzida
7.0.3xx .NET 8 Visualização 3
Tipo de mudança de rutura
Essa alteração pode afetar a compatibilidade binária. É também uma mudança de comportamento.
Razão para a alteração
Havia um bug existente em que o SDK do .NET afetava a codificação no console para outros programas. Esse foi um bug que foi corrigido, resultando nessa mudança de quebra.
As versões mais antigas do Windows 10 (ou seja, versões anteriores à atualização de novembro de 2019) não suportavam UTF-8, portanto, o comportamento padrão não deveria ser usar a codificação UTF-8. Em vez disso, está agora disponível um opt-in.
Ação recomendada
Se o seu aplicativo precisar alterar a página de código no Windows, ele poderá executar um processo para invocar o chcp
comando. Seu aplicativo não deve depender do SDK do .NET para alterar a codificação.
Para versões mais antigas do Windows 10 que não suportam oficialmente UTF-8 onde você deseja que o SDK do .NET continue a alterar a codificação para UTF-8 para idiomas diferentes do inglês, você pode definir a variável DOTNET_CLI_FORCE_UTF8_ENCODING
de ambiente como true
ou 1.