L'output della console dell'interfaccia della riga di comando usa UTF-8
Se la variabile di ambiente DOTNET_CLI_UI_LANGUAGE
o VSLANG
è impostata, l'output della console dell'interfaccia della riga di comando di .NET e la codifica di input vengono modificati in UTF-8, in modo che la tabella codici possa essere modificata anche in UTF-8. Questo nuovo comportamento consente il rendering corretto dei caratteri delle lingue impostate da tali variabili di ambiente.
Questa modifica influisce solo sui sistemi operativi Windows (la codifica è corretta in altre piattaforme). Inoltre, si applica solo a Windows 10 e versioni successive in cui le impostazioni cultura dell'interfaccia utente impostate dall'utente non sono in inglese.
Comportamento precedente
I caratteri in determinate lingue, tra cui cinese, tedesco, giapponese e russo, a volte vengono visualizzati come caratteri infusi o come ?
nella console. Ad esempio:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
???????????????...
Nuovo comportamento
A partire da .NET 7 (versione 7.0.3xx) e .NET 8, viene eseguito correttamente il rendering dei caratteri. Sia la codifica sia la tabella codici cambiano. Ad esempio:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
正在确定要还原的项目…
Le versioni di Windows precedenti a Windows 10 1909 non supportano completamente UTF-8 e potrebbero riscontrare problemi dopo questa modifica. A partire da .NET 8 e .NET 7.0.300 SDK, .NET SDK non modifica più la codifica in UTF-8 in queste versioni, per impostazione predefinita. Per acconsentire esplicitamente all'uso di UTF-8 anche nelle versioni di Windows 10 che non lo supportano, usare la variabile di ambiente DOTNET_CLI_FORCE_UTF8_ENCODING
).
Inoltre, vi era un bug esistente in cui l'SDK può influire sulla codifica di altri comandi e programmi chiamati nello stesso prompt dei comandi al termine dell'esecuzione dell'SDK. Ora che l'SDK modifica più frequentemente la codifica, l'impatto di questo bug può aumentare. Tuttavia, il bug è stato corretto in .NET 8 e .NET 7.0.300 SDK. Per altre informazioni, vedere SDK non modifica più la codifica della console dopo il completamento.
Versione introdotta
7.0.3xx .NET 8 Preview 1
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità dell'origine e sulla compatibilità binaria. Si tratta anche di una modifica del comportamento.
Motivo della modifica
L'uso dell'interfaccia della riga di comando di .NET in lingue non inglesi ha fornito un'esperienza scadente.
Gli sviluppatori che non usano già le variabili VSLANG
e DOTNET_CLI_UI_LANGUAGE
non sono interessati. L'impatto dovrebbe essere minimo, in quanto questa impostazione della lingua non avrebbe funzionato correttamente in primo luogo a causa di caratteri incomprensibili. Inoltre, solo gli sviluppatori che usano Windows 10 o versioni successive potrebbero essere interessati, la maggior parte dei quali probabilmente usa la versione 1909 o successiva.
Gli scenari legacy sono già meno probabili per supportare le lingue interrotte, quindi è improbabile che si voglia usare un altro linguaggio che potrebbe esporre comunque questa interruzione.
Azione consigliata
- Se si usa una versione precedente di Windows 10, eseguire l'aggiornamento alla versione 1909 o successiva.
- Se si vuole usare una console legacy o si riscontrano problemi di compilazione o altri a causa della modifica della codifica, annullare l'impostazione
VSLANG
eDOTNET_CLI_UI_LANGUAGE
per disabilitare questa modifica.