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把它變成了Ž,š,™,„,,」
。
通過上面的代碼運行它變成了Ä,Ü,Ö,ä,ü,ö
。