#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. всем привет. Вам нужно добавить более подробную информацию о том, с какой именно ошибкой вы столкнулись. Также попробуйте поделиться csv-файлом для минимальной воспроизводимой демонстрации.
2. Можете ли вы опубликовать полное исключение, которое вы получаете?
3. извините, я просто добавил больше деталей. Пожалуйста, посмотрите фотографии. Я ценю вашу помощь!
4. @PixelUvw Вы уверены, что файл закодирован как UTF-8?
5. Кроме того, ваш код не имеет особого смысла, когда вы кодируете и декодируете сразу после этого. Просто используйте строку
myCsvFile
напрямую и убедитесь, что ваш файл (assets/csv2.txt) сохраняется на диске в формате UTF-8.
Ответ №1:
есть идеи, как правильно закодировать файл перед анализом? Как только я редактирую файл в vscode, он загружается без каких-либо проблем.