2016-07-22 1 views
5

C# 콘솔 응용 프로그램이 있고 그 안에 일부 ASCII 아트를하려고했습니다. 그러나 사용하고 싶은 문자 중 일부는 유니 코드입니다. 그래서 저는 인터넷을 검색 중이었고 C# 콘솔 응용 프로그램에서 콘솔을 유니 코드로 설정하는 방법에 대한 통합 답변을 찾을 수 없었습니다.C# 콘솔 응용 프로그램을 유니 코드 출력으로 설정

상하 좌우 : 나는 C# 콘솔 응용 프로그램에 콘솔을 설정하려면 어떻게 유니 코드가 되실?

편집 : 나는이 질문과 관련이없는 무언가를 검색 한 후 this post을 발견했다.

답변

7

그것은 당신이 콘솔 디스플레이 유니 코드 문자를 만들기 위해 설정해야 할 여러 가지가있는 것으로 나타났다.

  1. 콘솔을 유니 코드 지원 글꼴로 설정하십시오. 이렇게하려면 Console.ReadKey();으로 C# 콘솔 응용 프로그램을 한 번 실행하면 창이 열립니다. 창의 제목 표시 줄을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오. 이러한 옵션은 Visual Studio를 통해 디버깅 할 때 지속됩니다. 시스템 전체에서 옵션을 유지하려면 대신 기본 메뉴를 사용해야 할 수도 있습니다. 글꼴 탭에서, 당신은 Lucida Console에 글꼴을 설정해야합니다. 이 글꼴은 유니 코드 문자를 지원합니다. 관련 게시물은 here입니다.
  2. 세트 UTF-8 콘솔의 코드 페이지. 이것은 약간 까다 롭습니다. 왜냐하면 코드 페이지를 변경하려면 콘솔 창에서 명령을 실행해야하기 때문입니다. 어떤 이유로 든이 옵션은 콘솔 기본 설정으로 사용할 수 없습니다. 이렇게하려면 별도의 cmd.exe 프로세스를 만들어서 제공된 일반 콘솔 대신이 프로세스를 사용해야합니다.

    var cmd = new Process 
    { 
        StartInfo = 
        { 
         FileName = "cmd.exe", 
         RedirectStandardInput = true, 
         RedirectStandardOutput = true, 
         CreateNoWindow = true, 
         UseShellExecute = false 
        } 
    }; 
    cmd.Start(); 
    
    cmd.StandardInput.WriteLine("chcp 65001"); 
    cmd.StandardInput.Flush(); 
    cmd.StandardInput.Close(); 
    

    코드의 첫 번째 부분은 상기 cmd.exe 새로운 프로세스를 생성한다. StartInfo의 설정은 Console이이 새 프로세스로 리디렉션되는지 확인합니다. 코드의 두 번째 부분은이 콘솔 창에 명령을 보내고 실행합니다. 해당 명령 chcp 65001은 콘솔의 코드 페이지를 UTF-8로 설정합니다. 관련 게시물은 herehere입니다.

  3. 은 UTF-8로 OutputEncoding을 설정합니다.Console.WriteLine이 실제로 유니 코드 문자를 출력하는 유일한 방법입니다. 이 설정은 매우 간단합니다.

    Console.OutputEncoding = Encoding.UTF8; 
    

    이제 Console의 결과는 유니 코드로 표시됩니다. 관련 게시물은 here입니다.

그럼, 그게 전부입니다! 나는이 정보가 누군가를 돕기를 바랍니다. :-)

관련 문제