我的列表不接受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中的结果是:
你好!???? ? ? !
我怎样才能使它接受希腊字符?
您需要显式地在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。