2012-06-27 3 views
1

У меня есть следующие проблемы: У меня есть некоторые Excel-листы и должны экспортировать их в формате DOS-CSV (по некоторым причинам). Следствием этого является то, что немецкий umlaute (Ä, Ü, Ö, ä, ü, ö) не экспортируются правильно. На следующем этапе эти CSV-файлы должны быть импортированы в приложение Winform. Можно ли вернуть символы соответствия Ä, Ü, Ö, ä, ü, ö во время импорта?DOS-CSV импорт с помощью C# и немецкой Umlaute (A, U, Ö, ä, ü, ö)

ответ

4

Если вы выберете формат 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 превратил его в Ž,š,™,„,,”.

Выполнение этого кода, приведенного выше, повернуло его обратно в Ä,Ü,Ö,ä,ü,ö.

Смежные вопросы