Исключение форматирования CSV для флаттера rootBundle LoadString

#flutter #csv #dart

Вопрос:

Я столкнулся с проблемой с методом rootBundle LoadString. Я пытаюсь загрузить файл csv, экспортированный из внешнего источника. Если я открою, а затем закрою файл с помощью excel, все будет работать нормально. Я проверил кодировку, которая не является проблемой, возможно, я ошибаюсь… Тем не менее я подозреваю пустую строку с новой строкой в конце файла.

вот мой код:

   initClient() async {
    var myCsvFile = await rootBundle.loadString('assets/csv2.txt');

    var encoded = utf8.encode(myCsvFile);
    var decoded = utf8.decode(encoded);
    var rowAsListValues =
        const CsvToListConverter(fieldDelimiter: 't', eol: 'n')
            .convert(decoded);
    var parsedList = [];
    for (var items in rowAsListValues) {
      if (items[4] < 0) {
        parsedList.add(items);
      }
    }

    return parsedList;
  }
 

изображение 1изображение 2изображение 3

Комментарии:

1. всем привет. Вам нужно добавить более подробную информацию о том, с какой именно ошибкой вы столкнулись. Также попробуйте поделиться csv-файлом для минимальной воспроизводимой демонстрации.

2. Можете ли вы опубликовать полное исключение, которое вы получаете?

3. извините, я просто добавил больше деталей. Пожалуйста, посмотрите фотографии. Я ценю вашу помощь!

4. @PixelUvw Вы уверены, что файл закодирован как UTF-8?

5. Кроме того, ваш код не имеет особого смысла, когда вы кодируете и декодируете сразу после этого. Просто используйте строку myCsvFile напрямую и убедитесь, что ваш файл (assets/csv2.txt) сохраняется на диске в формате UTF-8.

Ответ №1:

есть идеи, как правильно закодировать файл перед анализом? Как только я редактирую файл в vscode, он загружается без каких-либо проблем.