2016-11-24 15 views
1

У меня есть консольное приложение Win32, которое играет в игру жизни в окне CMD.Как использовать ярлыки в формате ASCII в Visual Studio 15 для консольного приложения?

Я хотел бы нарисовать коробку вокруг поля, используя некоторые стандартные символы рисования, такие как: (186: ║), (187: ╗) (188: ╝), (200: ╚), (201 : ╔), (205: ═), но я никуда не денусь.

Во-первых, во время сборки я получаю предупреждения, такие как: «предупреждение C4566: символ, представленный универсальным-символьной именем„\ u2551“не может быть представлена ​​в текущей кодовой страницы (1252)»

код будет работать , но он будет отображать что-то еще вместо символов рисования окна. Я просмотрел столько свойств, сколько мог найти, но я не нашел места для изменения текущей кодовой страницы.

Любая идея о том, как и где ее изменить? Или это то, что мне нужно изменить в Windows, возможно? Я запускаю Win 7 Pro, если это имеет значение.

Я изменил кодовую страницу редактора VS до 850 (западноевропейская DOS), но это не повлияло на исполняемый файл.

ответ

0

Nota Bene: «high ASCII» и не являются достаточно конкретными, чтобы быть значимыми. (Пожалуйста, просто прекратите использовать эти условия.)

Последние вещи: ваша консоль должна иметь выбранный шрифт, который поддерживает кодировку и символы, которые вы хотите использовать. Это не должно быть проблемой для символов рисования с 1981 года. Но вы можете проверить, проверив настройки консоли и используя charmap.

Лучше не связываться с кодировкой исходного кода по умолчанию C#. UTF-8 отлично.

Далее следует использовать символы, которые вы хотите использовать в своем исходном коде, как буквенные кодовые единицы UTF-16. Итак, «║» вместо 186, но «\ u2551», если нужно. Это делает код намного легче читать.

Console.OutputEncoding Лучше использовать UTF-8 для вывода, если он каким-либо образом не поддерживается или неловко использовать.

Если вы можете, измените свою консольную кодировку на UTF-8 с помощью команды chcp 65001. Если вы не можете, вернитесь и измените свой Console.OutputEncoding на все, что использует ваша консоль (например, кодовая страница 437).


Вот пример:

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)}╝"); 
    } 
} 

Он показывает это, после того, как я CHCP 65001 в cmd.exe:

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

И это, если я запускаю его, не делая CHCP первым :

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

И это, после того как я сделаю chcp 850 in cmd.exe:

╔═══╗ 
║850║ 
╚═══╝ 
+0

Окно консоли, открытое визуальной студией, поддерживает символы рисования окна, так как я могу вводить их с помощью клавиш Alt-клавиатуры, и они отображаются просто отлично. В источнике я использую «║», а не числовые значения - это визуальная студия, которая интерпретирует их как «\ uWhatever». – JSz

+0

Вы можете открыть ту же консоль с cmd.exe для запуска chcp. –