2016-11-24 5 views
1

Ich habe eine Win32-Konsole App, die das Spiel des Lebens in einem CMD-Fenster spielt.Wie wird das Zeichnen von hohen ASCII-Zeichen in der Visual Studio 15-Konsolenanwendung verwendet?

Ich möchte eine Box um das Feld mit einigen der Standard-Box Zeichnungszeichen wie ziehen: (186: ║), (187: ╗) (188: ╝), (200: ╚), (201 : ╔), (205: ═) aber ich komme nirgendwohin.

Zuerst während Build bekomme ich Warnungen wie: „Warnung C4566: Zeichen dargestellt durch universelle Zeichen Namen‚\ u2551‘kann nicht in der aktuellen Codepage (1252) dargestellt werden“

Der Code wird ausgeführt , aber es wird etwas anderes anstelle der Boxzeichen angezeigt. Ich habe so viele Eigenschaften durchsucht, wie ich finden konnte, aber ich habe keinen Platz gefunden, um die aktuelle Codepage zu ändern.

Irgendeine Idee, wie und wo man es ändert? Oder muss ich das in Windows vielleicht ändern? Ich spiele Win 7 Pro, wenn das wichtig ist.

Ich habe die Codepage des VS-Editors auf 850 (westeuropäische DOS) geändert, aber das hatte keine Auswirkungen auf die ausführbare Datei.

Antwort

0

Nota Bene: "high ASCII" und sind nicht spezifisch genug, um sinnvoll zu sein. (Bitte verwenden Sie diese Begriffe nicht mehr.)

Das Wichtigste zuerst: Ihre Konsole muss eine Schriftart ausgewählt haben, die die Codierung und die Zeichen unterstützt, die Sie verwenden möchten. Dies sollte für Box-Zeichen-Zeichen seit 1981 kein Problem sein. Sie können dies aber überprüfen, indem Sie Ihre Konsoleneinstellungen überprüfen und charmap verwenden.

Es ist am besten, sich nicht mit der Standardcodierung der C# -Quelldatei zu befassen. UTF-8 ist großartig.

Als nächstes verwenden Sie die Zeichen, die Sie in Ihrem Quellcode als literale UTF-16-Code-Einheiten verwenden möchten. Also, "║" statt 186 - aber "\ u2551" wenn du musst. Es macht den Code so viel einfacher zu lesen.

Console.OutputEncoding Am besten verwenden Sie UTF-8 für Ihre Ausgabe, es sei denn, es wird nicht unterstützt oder ist umständlich zu bedienen.

Wenn Sie können, ändern Sie die Konsolencodierung mit dem Befehl chcp 65001 in UTF-8. Wenn Sie nicht können, gehen Sie zurück und ändern Sie Ihre Console.OutputEncoding zu dem, was Ihre Konsole verwendet (z. B. Codepage 437).


Hier ein Beispiel:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var codePage = Console.OutputEncoding.CodePage.ToString(); 
     var length = codePage.Length; 
     Console.WriteLine($"╔{new String('═', length)}╗"); 
     Console.WriteLine($"║{codePage}║"); 
     Console.WriteLine($"╚{new String('═', length)}╝"); 
    } 
} 

Es zeigt dies, nachdem ich in cmd.exe chcp 65001 tun:

╔═════╗ 
║65001║ 
╚═════╝ 

Und das, wenn ich es laufen, ohne vorher zu tun chcp :

╔═══╗ 
║437║ 
╚═══╝ 

Und das, nachdem ich chcp 850 in cmd.exe:

+0

Das Konsolenfenster, das von Visual Studio geöffnet wird, unterstützt die Box Zeichen Zeichen seit ich sie mit Alt-Tastatur eingeben kann und sie zeigen sich gut. In der Quelle verwende ich "║", keine numerischen Werte - es ist Visual Studio, das sie als "was auch immer" interpretiert. – JSz

+0

Sie können dieselbe Konsole mit cmd.exe öffnen, um chcp auszuführen. –

Verwandte Themen