1 (edited by mikhail_a 2017-11-22 11:50:25)

Topic: Проблема с модулем импорта из "русскоязычного" csv файла

Прикручивая к своему проекту импорт данных из csv файла на основе предложенного разработчиком кода столкнулся с неожиданной проблемой: если в csv файле встречается хотя бы одно слово на русском языке, то импорт не осуществляется.
Импорт не происходит из-за подсчета количества строк в загруженном файле.
          sl := TStringList.Create;
          sl.LoadFromFile (OpenDialog.FileName);
         c := sl.Count - 1;
          for i := 0 to c do
          begin ...
Если файл содержит русские символы, то Count возвращает 0. А если в файле только английские символы, то возвращается как положено имеющееся число строк.
При этом, если попытаться русскоязычный файл загрузить например в комбобокс (Form1.ComboBox1.Items.LoadFromFile('1.csv')), то все строки загружаются нормально.
И в комбобоксе Count работает тоже нормально (Form1.ComboBox1.Items.Count).
Очевидно, TStringList не хочет работать с русской кодировкой, поэтому и Count никаких строк в нем не находит.
Протестировал при разных кодировках файла и стало ясно, что проблемы возникают если csv файл записан не в кодировке UTF-8.
Как сделать так, чтобы при загрузке файла его кодировка(разная) обрабатывалась корректно?

Re: Проблема с модулем импорта из "русскоязычного" csv файла

Приложите пожалуйста ваш файл 1.csv к сообщению.

Dmitry.

Re: Проблема с модулем импорта из "русскоязычного" csv файла

Проблема с кодировкой у меня была в версии 3.6
Т.е. это тоже самое, что в этом топике: http://myvisualdatabase.com/forum/viewtopic.php?id=3870
В версии 4.05 проблемы с чтением ANSI файла не наблюдается.
Вопрос решен.