кодировка CSV-файла для символов кириллицы - PullRequest
1 голос
/ 02 марта 2012

Я использую следующий код для создания файла .csv из моей таблицы журналов.

public ActionResult Index()
{
var records = loggingService.GetLogRecords(model.Since, model.For);

var mainSb = new StringBuilder();
mainSb.Append("Date,User name\n");

foreach (var logRecord in records)
{
    mainSb.Append(logRecord.Time.ToString("dd/MM/yyyy hh:mm:ss")).Append(",");
    mainSb.Append("\"").Append(logRecord.UserName ?? "").Append("\"").Append(",");
}
return File(Encoding.Unicode.GetBytes(mainSb.ToString()), "text/csv", string.Format("logs.csv"));
}

Имена пользователей содержат символы кириллицы, а когда я открываю файл .csv - символы кириллицы отображаются плохо.Я также пытался использовать кодировки UTF8 и UTF32.Какую кодировку я должен использовать или какие изменения я должен сделать?

1 Ответ

12 голосов
/ 03 марта 2012

Вы можете использовать UTF-8 с преамбулой.Попробуйте в конце так:

var data = Encoding.UTF8.GetBytes(mainSb.ToString());
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
return File(result, "text/csv", "logs.csv");

Также вы, похоже, используете \n, который не является правильным разделителем новой строки в Windows, и вы не добавляете новые строки в цикле foreach, так что все будет в одной строке, что приведет к неверному файлу CSV.Пожалуйста, пожалуйста, пожалуйста, не катите свой собственный анализатор CSV .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...