La codifica della console non rimane UTF-8 dopo il completamento

Il bug indicato nell'output della console dell'interfaccia della riga di comando usa una modifica che causa un'interruzione di UTF-8, in cui .NET SDK ha modificato la codifica dell'intera console, è stata corretta. La codifica della console non rimane più UTF-8 dopo che .NET SDK esegue un comando. È possibile che gli utenti si affidassero a tale comportamento, di conseguenza si tratta di una modifica che causa un'interruzione.

Inoltre, .NET SDK non modifica più la codifica in UTF-8 nelle versioni precedenti di Windows 10 che non lo supportano completamente.

Comportamento precedente

  • L'SDK ha modificato la codifica di un terminale dopo l'esecuzione di un comando, ad esempio dotnet build.
  • L'SDK usava la codifica UTF-8 per eseguire correttamente il rendering di caratteri non inglesi, anche nelle versioni di Windows 10 che non supportavano ufficialmente UTF-8. Il comportamento non è stato definito in tali versioni.

Nuovo comportamento

  • L'SDK non modifica la codifica del terminale dopo l'uscita per altri programmi.
  • Per impostazione predefinita, l'SDK non usa più UTF-8 per le versioni di Windows che non lo supportano.

Versione introdotta

7.0.3xx .NET 8 Anteprima 3

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità binaria. È anche un cambiamento comportamentale.

Motivo della modifica

Si è verificato un bug esistente in cui .NET SDK ha interessato la codifica nella console per altri programmi. Si tratta di un bug risolto, con conseguente modifica che causava un'interruzione.

Le versioni precedenti di Windows 10 (ovvero le versioni precedenti all'aggiornamento di novembre 2019) non supportano UTF-8, quindi il comportamento predefinito non deve essere quello di usare la codifica UTF-8. Al contrario, è ora disponibile un consenso esplicito.

Se l'app deve modificare la tabella codici in Windows, può eseguire un processo per richiamare il comando chcp. L'app non deve basarsi su .NET SDK per modificare la codifica.

Per le versioni precedenti di Windows 10 che non supportano ufficialmente UTF-8 in cui si vuole che .NET SDK continui a modificare la codifica in UTF-8 per lingue diverse dalla lingua inglese, è possibile impostare la variabile DOTNET_CLI_FORCE_UTF8_ENCODING di ambiente su true o 1.

Vedi anche