Comment écrire des caractères Unicode sur la console?

Je me demandais s’il était possible, dans une application console, d’écrire des caractères comme utilisant .NET. Lorsque j’essaie d’écrire ce caractère, la console émet un point d’interrogation.

Il est probable que votre encodage de sortie soit défini sur ASCII. Essayez d’utiliser ceci avant d’envoyer la sortie:

 Console.OutputEncoding = System.Text.Encoding.UTF8; 

( Lien MSDN vers la documentation à l’appui)

Et voici une petite application de test de console que vous pouvez trouver utile:

C #

 using System; using System.Text; public static class ConsoleOutputTest { public static void Main() { Console.OutputEncoding = System.Text.Encoding.UTF8; for (var i = 0; i <= 1000; i++) { Console.Write(Strings.ChrW(i)); if (i % 50 == 0) { // break every 50 chars Console.WriteLine(); } } Console.ReadKey(); } } 

VB.NET

 imports Microsoft.VisualBasic imports System public module ConsoleOutputTest Sub Main() Console.OutputEncoding = System.Text.Encoding.UTF8 dim i as integer for i = 0 to 1000 Console.Write(ChrW(i)) if i mod 50 = 0 'break every 50 chars Console.WriteLine() end if next Console.ReadKey() End Sub end module 

Il est également possible que votre choix de police Console ne prenne pas en charge ce caractère particulier. Cliquez sur le menu de la barre d'outils Windows (icône comme C :.) et sélectionnez Propriétés -> Police. Essayez d'autres fonts pour voir si elles affichent correctement votre personnage:

photo de la police de la console modifier

Propriété Console.OutputEncoding

http://msdn.microsoft.com/library/system.console.outputencoding(v=vs.110).aspx

Notez que l’affichage réussi des caractères Unicode sur la console nécessite les éléments suivants:

  • La console doit utiliser une police TrueType, telle que Lucida Console ou Consolas, pour afficher les caractères.

J’ai trouvé une solution élégante sur MSDN

 System.Console.Write('\uXXXX') //XXXX is hex Unicode for character 

Ce programme simple écrit ℃ directement sur l’écran.

 using System; public class Test { public static void Main() { Console.Write('\u2103'); //℃ character code } }