Compartilhar via


A codificação do console não permanece em UTF-8 após o término

Correção do bug mencionado na saída do console da CLI usa alteração interruptiva UTF-8, em que o SDK do .NET alterava a codificação de todo o console. 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 passaram a confiar nesse comportamento, portanto, essa é uma alteração significativa.

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 dão suporte total a ele.

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 que não são em inglês, mesmo em versões do Windows 10 que não dão suporte oficialmente ao 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 o UTF-8 para versões do Windows que não dão suporte a ele.

Versão introduzida

7.0.3xx .NET 8 Versão Prévia 3

Tipo de mudança disruptiva

Essa alteração pode afetar a compatibilidade binária. Também é uma mudança comportamental.

Motivo da alteração

Houve um bug existente em que o SDK do .NET afetava a codificação no console para outros programas. Esse foi um bug corrigido, resultando nessa alteração interruptiva.

As versões mais antigas do Windows 10 (ou seja, versões antes da atualização de novembro de 2019) não dão suporte ao UTF-8, portanto, o comportamento padrão não deve ser usar a codificação UTF-8. Em vez disso, uma opção de adesão agora está disponível.

Se o 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 dão suporte oficialmente ao UTF-8, em que você deseja que o SDK do .NET continue a alterar a codificação para UTF-8 para idiomas que não são em inglês, você pode definir a variável DOTNET_CLI_FORCE_UTF8_ENCODING de ambiente como true ou 1.

Consulte também