При экспорте Календаря Outlook в формате csv нечитаемая кодировка. Как будто их одновременно две. Не получается импортировать в C# через CsvHelper

TlDr: После переустановки Windows из Outlook'a csv экспортируется в нечитаемой кодировке. Файл не грузит в CsvHelper

Экспортирую Календарь Outlook в формате csv через стандартные возможности экспорта Outlook. Открываю его в Notepad++. Файл открывается в кодировке UTF-8 BOM. В этом случае часть текстовых значений отображается нормально, но все заголовки и часть значений в сломанной кодировкеCSV в UTF-8

При смене кодировки на ANSII ситуация меняется. Заголовки начинают отображаться нормально, сломанные данные тоже. Но данные которые корректно отображались в UTF-8 теперь сломаны. CSV в ANSII

Ситуация появилась после переустановки Windows. Из того что знаю, я проверил настройки Региона и Локализации, там стоит Русский язык.

В итоге я хочу прочитать этот файл в C#. В данный момент я использую библиотеку CsvHelper. Импортирую через маппинг в виде ClassMap

using var reader = new StreamReader(filePath);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
csv.Context.RegisterClassMap<CalendarCSVClassMap>();
var calendars = csv.GetRecords<CalendarCSV>();

Попробовал различные настройки Encoding'a для CsvReader'a (кодовые страницы 1251, 1251 и 65001), но результата не дало.

Падает со следующей ошибкой

CsvHelper.HeaderValidationException: Header with name 'Тема'[0] was not found.
// ... тут портянка с остальными заголовками
If you are expecting some headers to be missing and want to ignore this validation, set the configuration HeaderValidated to null. You can also change the functionality to do something else, like logging the issue.

IReader state:
   ColumnCount: 0
   CurrentIndex: -1
   HeaderRecord:
["????","???? ??????","????? ??????","???? ??????????","????? ??????????","????? ????","??????????? ???/????","???? ???????????","????? ???????????","??????????? ????????","???????????? ?????????","?????????????? ?????????","??????? ????????","? ??? ?????","????????","?????????","?????","????????","???????","??????????","?????? ??????","???????"]
// .. остальная инфа
at CsvHelper.Configuration.ConfigurationFunctions.HeaderValidated(HeaderValidatedArgs args)
   at CsvHelper.CsvReader.ValidateHeader(Type type)
   at CsvHelper.CsvReader.ValidateHeader[T]()
   at CsvHelper.CsvReader.GetRecords[T]()+MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.ToList()
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at CalendarDataToAxData.Logic.CalendarCSVReader.ReadActivities(String filePath) in F:\Code\CalendarDataToAxData\CalendarDataToAxData\Logic\CalendarCSVReader.cs:line 39
   at CalendarDataToAxData.Program.Main(String[] args) in F:\Code\CalendarDataToAxData\CalendarDataToAxData\Program.cs:line 45

Вопрос: Что я могу поменять в коде или в настройке системы. Или как поменять файл, чтобы у меня заработало? Тестовый csv можно найти тут - https://drive.google.com/file/d/1q75jWvInj5oTZopKhYZVEE7ivbU63gcs/view?usp=sharing


Ответы (0 шт):