У меня есть список строк, которые я записываю в файл CSV.Я пишу этот файл так:
FileInfo outputFile = new FileInfo("c:\output.csv");
StreamWriter writer = outputFile.CreateText();
StringBuilder line = new StringBuilder();
// List<String> listOfItems = ...
for (int i = 0, j = listOfItems.Count; i < j; i++) {
line.AppendFormat(" {0}", listOfItems[i]);
}
writer.WriteLine("col1,col2,{0}", line.ToString().Trim(' '));
writer.Close();
Когда я проверяю c:\output.csv
с помощью таких инструментов, как Notepad ++ или enca , файл выглядит как обычный текст с кодировкой us-ascii.Но когда мой клиент загружает CSV в свой интернет-магазин, столбец, созданный с StringBuilder
, имеет следующий формат:
:VAL1 :VAL2 :VAL3 ... :VALN
Этот столбец должен быть на самом деле:
val1 val2 val3 ... valN
Обратите внимание, чтонеправильная строка имеет двоеточие с префиксом к каждому значению, а значения в верхнем регистре.
Единственное, что я могу понять, это проблема кодирования.Итак, какую кодировку сгенерирует приведенный выше код?
Обновление (1 сентября 2010 г.): Оказалось, что это ошибка отображения в удаленном интернет-магазине.Этот код выводит обычный текст, как и должно быть.