C#错误的文本文件输出
本文关键字:文件 输出 文本 错误 | 更新日期: 2023-09-27 18:27:07
我目前正在构建一个纸牌游戏,当我将输出写入控制台时,一切都很好。然而,当我写入一个文件时,与每张卡相关的套装会变成一组奇怪的4个不同的字符。该文件不打印ASCII表中定义的Heart、Diamond、Club和Spade符号,而是生成4个不同的字符,包括-和|。另外两个角色看起来像是超级脚本的L。
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
}
接下来,我在循环中调用这个函数来打印用户的手。
谢谢你的帮助!
ASCII不包括红心、菱形、梅花和黑桃。任何包含它们的"ASCII表"都是在谈论一种特定的编码,这种编码可能与前127个值的ASCII兼容(这是ASCII定义的所有值),但随后会自行进行。
.NET对所有与文本相关的内容都使用Unicode;你应该查阅Unicode代码表来找到你想要的字符,但要考虑如何将它们写入文件(你将使用哪种编码,等等)。控制台字体通常不支持Unicode中的所有内容。
试试这个:
String Body = "some string";
System.IO.StreamWriter ansiWriter = new StreamWriter("file.txt", false, Encoding.GetEncoding(1250));
ansiWriter.WriteLine(Body);
ansiWriter.Close();
这可能与.net将字符串存储为unicode有关,但如果没有您的代码,我无法确定这就是问题所在,这完全取决于您如何保存符号。
有关更多信息,请参阅此链接bytes.com