2012-03-08 2 views
-2

В настоящее время я создаю карточную игру, и все работает отлично, когда я пишу вывод на консоль. Однако, когда я пишу в файл, костюм, связанный с каждой карточкой, становится странным набором из 4 разных символов. Вместо того, чтобы печатать символы Heart, Diamond, Club и Spade, как определено в таблице ASCII, файл создает 4 разных символа, которые включают в себя - и |. Остальные два персонажа выглядят как крошечные супер-скриптовые L's.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», которая включает их, говорит о конкретной кодировке, которая, возможно, совместима с ASCII для первых 127 значений (которые все, что ASCII определяет), но затем идет своим путем.

.NET использует Unicode для всего текстового; вы должны обратиться к Unicode code charts, чтобы найти нужные вам символы, но затем подумайте, как вы собираетесь записывать их в файл (какую кодировку вы будете использовать и т. д.). Часто консольные шрифты не поддерживают все в Unicode.

+0

Итак, как я могу получить свой текстовый файл в ASCII? – CodeKingPlusPlus

+1

@CodeKingPlusPlus: вы можете использовать 'Encoding.ASCII' - но, как я уже сказал, это * не * будет включать любые символы костюма. * Они не являются частью ASCII *, независимо от того, что веб-страница может сказать о них. –

0

Попробуйте это:

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

Это может быть что-то делать с .net хранения строк в Юникоде, но без кода я не мог быть уверен, что это то, что проблема в том, что все зависит, каким вы сохранили символы.

видеть эту ссылку для получения дополнительной информации bytes.com

Смежные вопросы