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

本文关键字:字符 列表 不接受 我的 | 更新日期: 2023-09-27 18:14:45

我用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);
        }
    }

My TextFile1.txt:

你好!Γείασου!

在listbox中的结果是:

你好!???? ? ? !

我怎样才能使它接受希腊字符?

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

您需要显式地在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。