2012-03-08 2 views
-2

현재 카드 게임을 제작 중이며 콘솔에 출력을 쓸 때 모든 것이 잘 작동합니다. 그러나 파일에 쓸 때 각 카드와 관련된 슈트는 이상한 4 가지 문자 집합이됩니다. ASCII 테이블에 정의 된대로 하트, 다이아몬드, 클럽 및 스페이드 기호를 인쇄하는 대신 파일에 - 및 |가 포함 된 4 개의 다른 문자가 생성됩니다. 나머지 두 캐릭터는 초소형 L 스크립트처럼 보입니다.C# 텍스트 파일 출력이 잘못되었습니다.

public enum SUIT { HEART = 0, DIAMOND = 1, CLUB = 2, SPADE = 3 }; 
public enum VALUE { NINE = 0, JACK = 1, QUEEN = 2, KING = 3, TEN = 4, ACE = 5 }; 
public static string printCard(PinochleCard theCard) 
//This card game uses a set of 5 card denominations 
    { 
     string cardS = ""; 

     switch (theCard.cardValue) 
     { 
      case VALUE.ACE: 
       cardS += 'A'; 
       break; 
      case VALUE.TEN: 
       cardS += "10"; 
       break; 
      case VALUE.KING: 
       cardS += 'K'; 
       break; 
      case VALUE.QUEEN: 
       cardS += 'Q'; 
       break; 
      case VALUE.JACK: 
       cardS += 'J'; 
       break; 
      case VALUE.NINE: 
       cardS += '9'; 
       break; 
     } 
     cardS += (char)(theCard.suit + 3); // +3 converts to heart, diamond, club, spade in 
     return cardS.PadRight(4);   // the console but not for files 
    } 

다음은이 함수를 루프에서 호출하여 사용자의 손을 인쇄하는 것입니다.

모든 도움에 감사드립니다!

+0

이 링크를 참조하십시오. 물론 코드를 제공하지 않았기 때문에 우리는 당신을 도울 수 없습니다. 코드를 그대로 게시하십시오. –

+2

코드는 어디에 있습니까? 대부분 유니 코드를 쓰고있을 가능성이 높습니다 :) –

+0

어떻게 심장, 다이아몬드, 클럽 및 스페이드 기호를 출력하고 있습니까? 파일을보기 위해 어떤 편집기를 사용하고 있습니까? 나는 표준 ASCII가 그들을 위해 코드를 가지고 있다고 생각하지 않는다, 그래서 당신이 파일을 보았을 때 당신이 그들을 정확하게 볼 수 없다는 것은 놀라운 것이 아니다. – Sahand

답변

2

ASCII에는 하트, 다이아몬드, 클럽 및 스페이드가 포함되지 않습니다. 그 (것)들을 포함하는 어떤 "ASCII 테이블"든지 가능하게 첫번째 127의 가치 (전부 ASCII가 정의하는)를위한 ASCII와 호환이 가능한 그러나 그 후에 그것의 자신의 방법 간다 특정한 암호화에 대해서 이야기하고있다.

.NET은 텍스트 관련 모든 것에 유니 코드를 사용합니다. 원하는 문자를 찾으려면 Unicode code charts을 참조해야합니다. 그런 다음 파일에 쓰기 방법 (사용하려는 인코딩 등)을 고려해야합니다. 종종 콘솔 글꼴은 유니 코드 내의 모든 것을 지원하지 않습니다.

+0

그럼 Text 파일을 ASCII로 인코딩하려면 어떻게해야합니까? – CodeKingPlusPlus

+1

@CodeKingPlusPlus : 당신은'Encoding.ASCII'을 사용할 수 있습니다 - 그러나 제가 말했듯이, 그것은 * 어떤 * 기호도 포함하지 않을 것입니다. * 일부 웹 페이지에서 ASCII에 대해 언급하지는 않습니다. –

0

이 시도 : 이것은 그 문제가 모두이 방법으로 따라 어떤 것을 내가 확신 할 수없는 유니 코드로하지만, 코드가없는 문자열을 저장하는 .NET 함께 할 수있는 뭔가가 될 수

 String Body = "some string"; 
     System.IO.StreamWriter ansiWriter = new StreamWriter("file.txt", false, Encoding.GetEncoding(1250)); 
     ansiWriter.WriteLine(Body); 
     ansiWriter.Close(); 
0

당신은 상징을 저장했습니다.

은 분명히이 코드에서 버그 자세한 내용은 bytes.com

관련 문제