1
我有以下问题:我有一些的Excel表,必须将其导出为DOS-CSV格式(由于某些原因)。其后果是,德国语言不能正确导出(Ä,Ü,Ö,ä,ü,ö)。在下一步中,这些CSV文件必须导入Winform应用程序。现在是否有可能在进口过程中恢复相关字符?,?,?,?,??DOS-CSV导入(A,U,O,A,U,O)
我有以下问题:我有一些的Excel表,必须将其导出为DOS-CSV格式(由于某些原因)。其后果是,德国语言不能正确导出(Ä,Ü,Ö,ä,ü,ö)。在下一步中,这些CSV文件必须导入Winform应用程序。现在是否有可能在进口过程中恢复相关字符?,?,?,?,??DOS-CSV导入(A,U,O,A,U,O)
如果您选择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);
我通过把Ä,Ü,Ö,ä,ü,ö
进入细胞,然后将其保存为一个DOS格式化的CSV在Excel文件中测试这一点。看着这个文档,Excel把它变成了Ž,š,™,„,,”
。
通过上面的代码运行它变成了Ä,Ü,Ö,ä,ü,ö
。