Je suis capable d'afficher correctement les symboles ASCII standard (jusqu'à 127) comme "coeur", "note" vous savez ce que je veux dire. Je voudrais aussi afficher ceux que je peux utiliser pour dessiner des murs (comme U0205) mais ça ne marche pas ... bon, ça marche mais ça ressemble à "?". De toute façon comment je peux les afficher? Je vous remercie.Console.Write() - affiche les caractères ascii étendus?
Répondre
Les applications en mode console sont limitées à un encodage de page de codes 8 bits. La valeur par défaut sur de nombreuses machines est IBM437, la page de codes qui correspond à l'ancien jeu de caractères IBM PC. Vous pouvez modifier la page de codes en affectant la propriété OutputEncoding:
Console.OutputEncoding = Encoding.UTF8;
Mais maintenant vous avez généralement un problème avec la police. Les consoles utilisent par défaut la police Terminal, une ancienne police de périphérique dont les glyphes étaient au bon endroit pour produire le jeu de caractères IBM PC. Il n'y a pas beaucoup de polices disponibles qui peuvent produire les bons glyphes qui correspondent aux codespoints Unicode. Consolas est à ce sujet, disponible sur Vista et Win7.
Mais ce n'est pas ce que vous demandez, je pense, je suppose que vous posez des questions sur les vieux caractères de dessin de boîte. Cela fonctionne sans aucun réglage avec les paramètres de la console, il vous suffit d'utiliser les bons caractères Unicode. Voici un exemple qui devrait survivre à un copier-coller:
class Program {
static void Main(string[] args) {
Console.WriteLine("╒════════╕");
Console.WriteLine("│ Hello │");
Console.WriteLine("│ world │");
Console.WriteLine("╘════════╛");
Console.ReadLine();
}
}
Pour trouver ces caractères, utilisez l'applet charmap.exe de Windows. Cliquez sur la case "Vue avancée" et tapez "boîte" dans la zone de texte "Rechercher", la grille remplira avec les caractères de dessin de boîte. La première utilisable qui sera correctement convertie en console est '\ u250c'.
Le problème semble provenir de l'application Console plutôt que de votre programme. La console standard dans Windows (cmd.exe) ne semble pas soutenir Unicode correctement - par exemple, essayez de copier la chaîne ci-dessous et coller directement dans une fenêtre cmd.exe:
Fußball Uo
PowerShell semble souffrir du même problème.
Une solution possible à votre problème consiste à créer une fenêtre/un formulaire dédié à utiliser en tant que «console de sortie» au lieu d'utiliser la console réelle à travers laquelle l'application a été exécutée.
Ces caractères s'affichent parfaitement dans la fenêtre de la console et PowerShell sous Server 2008 en utilisant les polices raster par défaut. Quelle version de Windows utilisez-vous? –
Unicode U + 0205 est "lettre minuscule latine avec double tombe" donc je ne suis pas sûr de quel personnage vous parlez ... –
Afficher le code actuel. –