Partager via


La sortie de la console CLI utilise UTF-8

Si la DOTNET_CLI_UI_LANGUAGE variable d’environnement est VSLANG définie, la sortie de la console CLI .NET et l’encodage d’entrée sont modifiés en UTF-8, afin que la page de codes puisse également passer à UTF-8. Ce nouveau comportement permet aux caractères des langages définis par ces variables d’environnement d’être affichés correctement.

Cette modification affecte uniquement les systèmes d’exploitation Windows (l’encodage était correct sur d’autres plateformes). En outre, elle s’applique uniquement aux versions windows 10 et ultérieures où la culture de l’interface utilisateur définie par l’utilisateur n’est pas anglaise.

Comportement précédent

Les caractères de certaines langues, y compris le chinois, l’allemand, le japonais et le russe, s’affichent parfois sous forme de caractères garbrés ou comme ? dans la console. Par exemple:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  ???????????????...

Nouveau comportement

À compter de .NET 7 (version 7.0.3xx) et .NET 8, les caractères s’affichent correctement. L’encodage et la page de codes changent. Par exemple:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  正在确定要还原的项目…

Les versions de Windows antérieures à Windows 10 1909 ne prennent pas entièrement en charge UTF-8 et peuvent rencontrer des problèmes après cette modification. (À partir du Kit de développement logiciel (SDK) .NET 8 et .NET 7.0.300, le SDK .NET ne modifie plus l’encodage en UTF-8 sur ces versions, par défaut. Pour revenir à l’utilisation de UTF-8 même sur les versions de Windows 10 qui ne le prennent pas en charge, utilisez la DOTNET_CLI_FORCE_UTF8_ENCODING variable d’environnement.)

En outre, il existe un bogue existant dans lequel le SDK peut affecter l’encodage d’autres commandes et programmes appelés dans la même invite de commandes une fois que le SDK a terminé l’exécution. Maintenant que le SDK modifie plus fréquemment l’encodage, l’impact de ce bogue peut augmenter. Toutefois, le bogue a été résolu dans le KIT SDK .NET 8 et .NET 7.0.300. Pour plus d’informations, consultez le Kit de développement logiciel (SDK) qui ne modifie plus l’encodage de la console après l’achèvement.

Version introduite

7.0.3xx .NET 8 Preview 1

Type de changement cassant

Cette modification peut affecter la compatibilité de la source et la compatibilité binaire. C’est aussi un changement comportemental.

Raison de la modification

L’utilisation de l’interface CLI .NET dans les langues autres que l’anglais offre une expérience médiocre.

Les développeurs qui n’utilisaient pas déjà les VSLANG variables et DOTNET_CLI_UI_LANGUAGE ne sont pas affectés. L’impact devrait être minimal, car ce paramètre de langue n’aurait pas fonctionné correctement en première place en raison de caractères garbrés. En outre, seuls les développeurs utilisant Windows 10 ou version ultérieure peuvent être affectés, dont la plupart utilisent probablement la version 1909 ou ultérieure.

Les scénarios hérités sont déjà moins susceptibles de prendre en charge les langues rompues. Il est donc peu probable que vous souhaitiez utiliser une autre langue susceptible d’exposer cette interruption de toute façon.

  • Si vous utilisez une version antérieure de Windows 10, effectuez une mise à niveau vers la version 1909 ou ultérieure.
  • Si vous souhaitez utiliser une console héritée ou rencontrez des problèmes de build ou d’autres en raison de la modification d’encodage, annulez VSLANG et DOTNET_CLI_UI_LANGUAGE désactivez cette modification.

Voir aussi