我正在构建一个纸牌游戏,当我将输出写入控制台时,一切正常。 但是,当我写入文件时,与每张卡相关联的套装变成了一组4个不同的字符。该文件不是打印ASCII表中定义的Heart,Diamond,Club和Spade符号,而是生成4个不同的字符,包括 - 和|。其他两个角色看起来就像是超级剧本的L's。
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)
ASCII不包括心形,钻石,球杆和黑桃。包含它们的任何“ASCII表”都在谈论一个特定的编码,它可能与前七个值(这些都是ASCII定义的)的ASCII兼容,但随后会以自己的方式进行。
.NET使用Unicode来处理与文本相关的所有内容;你应该咨询Unicode code charts找到你想要的字符 - 然后考虑你将如何将它们写入文件(你将使用哪种编码等)。通常,控制台字体不支持Unicode中的所有内容。
答案 1 :(得分:0)
试试这个:
String Body = "some string";
System.IO.StreamWriter ansiWriter = new StreamWriter("file.txt", false, Encoding.GetEncoding(1250));
ansiWriter.WriteLine(Body);
ansiWriter.Close();
答案 2 :(得分:0)
这可能与.net存储字符串作为unicode有关但没有你的代码我无法确定问题是什么,这取决于你如何保存符号。
请参阅此链接以获取更多信息bytes.com