Формирование csv файла (текст на польском языке) для Excel в кодировке UTF-8

Рейтинг: 1Ответов: 1Опубликовано: 28.10.2014

Пишу парсер для польского сайта. Результат парсинга заносится в csv файл, который потом открывается в Excel. Текст на польском языке. Использую следующую команду для записи текста в файл:

File.AppendAllText(tmpFile,Result + Environment.NewLine,Encoding.UTF8);

На моем компьютере запись происходит нормально (например, название категории Produkty IKEA FAMILY|Bezpieczeństwo). Однако на другом компьютере результат такой - Produkty IKEA FAMILY|BezpieczeЕ„stwo. Из-за подобных метаморфоз в тексте появляются лишние знаки " кавычек, что рушит всю структуру csv файла.

Почему это работает на одном компьютере, но не работает на другом? Или хотя бы как экранировать кавычки до записи в файл, ведь тут, как я понимаю, кавычки появляются после перекодировки, то есть внутри функции File.AppendAllText.

Ответы

▲ 2Принят

Возможно, проблема в кодировке строки Result. Откуда она берется и каким способом? Если строка Result не в UTF8, то при записи в файл будет добавлен результат преобразования этой строки в UTF8, а с этим есть некоторые заморочки, так как конвертируется не байтовое представление строки, а символьное. Поскольку разным символам в разных кодировках соответствуют разные коды, то байтовое представление строки до и после преобразования может отличаться. Попробуйте сделать что-то похожее на это (кодировка windows-1250 приведена для примера):

Encoding srcEncoding = Encoding.GetEncoding(1250); //windows-1250 Central European (Windows)
byte[] codes = srcEncoding.GetBytes(Result);
string utf8Result = Encoding.UTF8.GetString(codes);
File.AppendAllText(tmpFile, utf8Result + Environment.NewLine, Encoding.UTF8);