C # - FileHelpers: неправильное вычисление переменной DateTime - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть этот образец CSV файл:

Filip    Malýn        Male  1218-02-1994
Božena   Němcová      Female1804-02-1820
Jan      Žižka        Male  0719-09-1360
Che      Guevara      Male  2714-06-1928
AntoinedeSaint-ExupéryMale  1529-06-1900

Я загружаю его в код этой функцией:

FileHelperEngine<T>().ReadFile(fileName);

Но это заканчивается этой ошибкой:

FileHelpers.BadUsageException: 'The string '18-02-1994' (length 10) at line 1 has less chars than the defined for BirthDate (11). You can use the [FixedLengthRecord(FixedMode.AllowLessChars)] to avoid this problem.'

И если я добавлю [FixedLengthRecord(FixedMode.AllowLessChars)] к коду, это закончится этой ошибкой:

FileHelpers.ConvertException: 'Error Converting 'al' to type: 'Int32'. '

Я использую этот класс:

using System;
using FileHelpers;

namespace ImportExport.Mapping.FixedLength
{
    [FixedLengthRecord(FixedMode.AllowLessChars)]
    public class Person
    {
        [FieldFixedLength(9)]
        public String Name;

        [FieldFixedLength(13)]
        public String Surname;

        [FieldFixedLength(6)]
        public String Gender;

        [FieldFixedLength(2)]
        public Int32 OrderNum;

        [FieldFixedLength(11)]
        [FieldConverter(ConverterKind.Date, "dd-MM-yyyy")]
        public DateTime BirthDate;
    }
}

Я так много раз писал и пробовал много версий, но безуспешно. Что не так?

1 Ответ

0 голосов
/ 28 ноября 2018

Спасибо всем.Решением является добавление информации о кодировке файла.В моем случае изменение FileHelperEngine<T>().ReadFile(fileName); на FileHelperEngine<T>(Encoding.UTF8).ReadFile(fileName);.

...