【问题标题】:Reading a CSV file containing greek characters读取包含希腊字符的 CSV 文件
【发布时间】:2013-05-17 21:59:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# asp.net .net csv character-encoding


    【解决方案1】:

    ReadAllLines 有超载,导致 Encoding 沿着文件路径

    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));
    

    将打印:

    ϗϡϢϣϤ

    要找出文件实际上是用哪种编码编写的,请使用 next sn-p:

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

    对于我的场景,它将打印

    utf-8
    

    【讨论】:

    • 我试过了,还是不行。字符显示为 ?在黑色钻石中。
    • 尝试使用 unicode。更糟糕的是,这次它甚至没有读取数字字段
    • @jayt.dev 您是否正确保存了文件?我添加了保存读取文件中的希腊字符的示例
    • 好吧,也许我没有提供正确的编码。如何找出 CSV 文件中使用的编码?
    • 这里是 CSV 1-Z1GG43C​​;6;ΑΡΤΕΜΙΔΟΣ;ΑΓΙΑΠΑΡΑΣΚΕΥΗ;的样本。 1-ZYD59Q;63;ΨΑΡΩΝ;ΑΓΙΑΠΑΡΑΣΚΕΥΗ;;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2012-05-16
    • 2023-03-05
    • 2019-04-08
    相关资源
    最近更新 更多