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 ℃
en utilisant. NET. quand j'essaie d'écrire ce caractère, la console affiche un point d'interrogation.
3 réponses
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;
(MSDN Lien vers la documentation à l'appui.)
Et voici une petite application de test de console que vous pouvez trouver à portée de main:
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 de Console ne supporte pas 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 polices pour voir si elles affichent votre personnage correctement:
Console.Propriété 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
}
}