2016-11-24 10 views
1

나는 CMD 윈도우에서 생명의 게임을하는 Win32 콘솔 앱을 가지고있다.Visual Studio 15 콘솔 응용 프로그램에서 높은 ASCII 문자를 그리는 상자를 사용하는 방법은 무엇입니까?

(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을 사용하는 것이 가장 좋습니다. 그렇지 않은 경우에는 지원되지 않거나 사용하기가 어렵습니다.

가능한 경우 chcp 65001 명령을 사용하여 콘솔 인코딩을 UTF-8로 변경하십시오. 할 수 없다면 다시 돌아가서 콘솔을 변경하십시오. 콘솔에서 사용중인 코드로 출력 인코딩을 인코딩하십시오 (예 : 코드 페이지 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)}╝"); 
    } 
} 

그것은이 표시, 내가 cmd.exe를에 CHCP 65001을 한 후이

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

을 그리고, 내가 그것을 실행하면 첫 번째 CHCP하지 않고 :

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

그리고 chcp 850 in cmd.exe :

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

Visual Studio에서 열어 본 콘솔 창은 Alt 키패드로 입력 할 수 있기 때문에 상자 그리기 문자를 지원하며 잘 보입니다. 소스에서 나는 어떤 숫자 값도 아닌 '║'을 사용하고 있습니다. '\ uWhatever'로 해석하는 Visual Studio입니다. – JSz

+0

cmd.exe를 사용하여 동일한 콘솔을 열어 chcp를 실행할 수 있습니다. –