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
    }

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

谢谢你的帮助!

C#错误的文本文件输出

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