C#文本文件输出不正确

时间:2012-03-08 21:44:37

标签: c#

我正在构建一个纸牌游戏,当我将输出写入控制台时,一切正常。 但是,当我写入文件时,与每张卡相关联的套装变成了一组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
    }

接下来,我在循环中调用此函数来打印用户手。

感谢您的帮助!

3 个答案:

答案 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