我的列表不接受C#中的希腊字符

时间:2014-07-25 15:52:16

标签: c# list file

我在C#中创建了一个源代码,它接受了一个txt文档的每一行并将其放在一个列表中。之后,我试图在列表框中显示它们,但我得到希腊字符的未知符号。这是我的代码:

 public Form1()
    {
        InitializeComponent();
        const string f = "TextFile1.txt";

        // 1
        // Declare new List.
        List<string> lines = new List<string>();

        // 2
        // Use using StreamReader for disposing.
        using (StreamReader r = new StreamReader(f))
        {
            // 3
            // Use while != null pattern for loop
            string line;
            while ((line = r.ReadLine()) != null)
            {
                // 4
                // Insert logic here.
                // ...
                // "line" is a line in the file. Add it to our List.
                lines.Add(line);
            }
        }

        // 5
        // Print out all the lines.
        foreach (string s in lines)
        {
            listBox1.Items.Add(s);
            Console.WriteLine(s);
        }
    }

我的TextFile1.txt:

您好! Γείασου!

列表框中的结果是:

您好! ???? ???!

我怎么能接受希腊字符?

1 个答案:

答案 0 :(得分:4)

您需要在StreamReader的构造函数中明确指定编码,或者确保文件本身指定正确的编码。如果不指定,StreamReader将尝试自动检测文件的编码。

来自http://msdn.microsoft.com/en-us/library/ms143456(v=vs.110).aspx

  

StreamReader对象尝试通过查看来检测编码   流的前三个字节。

它检查文件的前3个字节,它应使用字节顺序标记指定编码,但如果文件中指定的编码错误,则可以使用StreamReader构造函数覆盖它。您还需要在StreamReader构造函数中指定该选项,以便在它存在且不正确时不尝试读取字节顺序标记。请参阅http://msdn.microsoft.com/en-us/library/akzyzwh9(v=vs.110).aspx