2

我正在尝试使用以下命令从 CSV 文件中读取数据:

var lines = File.ReadAllLines(@"c:\test.csv").Select(a => a.Split(';'));

它可以工作,但是包含单词的字段是用希腊字符编写的,并且它们以符号的形式呈现。如何Encoding正确设置才能阅读那些希腊字符?

4

1 回答 1

1

ReadAllLines有重载,它沿文件路径进行编码

var lines = File.ReadAllLines(@"c:\test.csv", Encoding.Unicode)
                .Select(line => line.Split(';'));    

测试:

File.WriteAllText(@"c:\test.csv", "ϗϡϢϣϤ", Encoding.Unicode);

Console.WriteLine(File.ReadAllLines(@"c:\test.csv", Encoding.Unicode));

将打印:

呸呸呸呸呸

要找出文件实际写入的编码,请使用下一个片段:

using (var r = new StreamReader(@"c:\test.csv", detectEncodingFromByteOrderMarks: true)) 
{
    Console.WriteLine (r.CurrentEncoding.BodyName);
}

对于我的场景,它将打印

utf-8
于 2013-05-17T10:05:26.390 回答