Partilhar via


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.

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.

Consulte também