Partager via


La sortie de la console CLI utilise UTF-8

Si la variable d’environnement DOTNET_CLI_UI_LANGUAGE ou VSLANG est définie, l’encodage de l’entrée et de la sortie de la console CLI passe à UTF-8, ce qui signifie que la page de codes peut également passer à UTF-8. Ce nouveau comportement permet d’afficher correctement les caractères des langues définies par ces variables d’environnement.

Ce changement affecte uniquement les systèmes d’exploitation Windows (l’encodage est correct sur d’autres plateformes). De plus, il ne s’applique qu’à Windows 10 et versions ultérieures où la culture de l’interface utilisateur définie par l’utilisateur n’est pas l’anglais.

Comportement précédent

Les caractères dans certaines langues, notamment le chinois, l’allemand, le japonais et le russe, étaient parfois tronqués ou s’affichaient sous la forme ? dans la console. Par exemple :

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

Nouveau comportement

À partir 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 ce changement. (À partir du Kit de développement logiciel (SDK) .NET 8 et .NET 7.0.300, le Kit de développement logiciel (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 variable d’environnement DOTNET_CLI_FORCE_UTF8_ENCODING.)

De plus, un bogue existant au niveau du kit SDK peut affecter l’encodage d’autres commandes et programmes appelés dans la même invite de commande une fois l’exécution du kit SDK terminée. Maintenant que le SDK change plus fréquemment l’encodage, l’impact de ce bogue peut augmenter. Toutefois, le bogue a été résolu dans le Kit de développement logiciel (SDK) .NET 8 et .NET 7.0.300. Pour plus d’informations, consultez Le kit SDK ne modifie plus l’encodage de la console une fois l’opération terminée.

Version introduite

7.0.3xx .NET 8 Preview 1

Type de changement cassant

Cette modification peut affecter la compatibilité des sources et la compatibilité binaire. C’est aussi un changement de comportement.

Raison du changement

L’utilisation de l’interface CLI .NET dans des langues autres que l’anglais entraînait des expériences médiocres.

Les développeurs qui n’utilisent pas les variables VSLANG et DOTNET_CLI_UI_LANGUAGE ne sont pas impactés. L’impact doit être minimal, car ce paramètre de langue n’aurait pas bien fonctionné en premier lieu en raison des caractères tronqués. Par ailleurs, seuls les développeurs utilisant Windows 10 ou ultérieur peuvent être impactés, la plupart d’entre eux utilisant probablement la version 1909 ou ultérieure.

Les scénarios hérités étant déjà moins susceptibles de prendre en charge les langues problématiques, il est peu probable que vous souhaitiez utiliser une autre langue qui pourrait exposer ce problème de toute façon.

  • Si vous utilisez une version antérieure de Windows 10, mettez-la à niveau vers la version 1909 ou ultérieure.
  • Si vous souhaitez utiliser une console héritée ou que vous rencontrez des problèmes de génération ou d’autres problèmes dus au changement d’encodage, annulez VSLANG et DOTNET_CLI_UI_LANGUAGE pour désactiver ce changement.

Voir aussi