【问题标题】:DOS-CSV import via C# and German Umlaute (Ä,Ü,Ö,ä,ü,ö)通过 C# 和德语变音符号 (Ä,Ü,Ö,ä,ü,ö) 导入 DOS-CSV
【发布时间】:2012-06-28 23:44:25
【问题描述】:

我有以下问题:我有一些 Excel-sheets 并且必须将它们导出为 DOS-CSV 格式(出于某些原因)。结果是,德语元音变音 (Ä,Ü,Ö,ä,ü,ö) 未正确导出。在下一步中,必须将这些 CSV 文件导入 Winform 应用程序。现在是否可以在导入期间取回正确的字符 Ä,Ü,Ö,ä,ü,ö?

【问题讨论】:

    标签: c# excel csv utf-8


    【解决方案1】:

    如果您选择 DOS-CSV 格式,Excel 将使用 437 代码页 (found that here) 对文档进行编码。您可以使用一点代码将其转换回 UTF-8:

    Encoding dosEncoding = Encoding.GetEncoding(437);
    string original = String.Empty;
    
    using (StreamReader sr = new StreamReader(@"D:\Path\To\output.csv", dosEncoding))
    {
        original = sr.ReadToEnd();
        sr.Close();
    }
    
    byte[] encBytes = dosEncoding.GetBytes(original);
    byte[] utf8Bytes = Encoding.Convert(dosEncoding, Encoding.UTF8, encBytes);
    
    string converted = Encoding.UTF8.GetString(utf8Bytes);
    

    我通过将Ä,Ü,Ö,ä,ü,ö 放入一个单元格然后将其保存为 Excel 中的 DOS 格式的 CSV 文件来测试这一点。查看文档,Excel 将其变成了Ž,š,™,„,,”

    通过上面的代码运行它把它变回Ä,Ü,Ö,ä,ü,ö

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 2020-11-10
      • 2018-08-03
      • 1970-01-01
      • 2019-06-08
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多