В моем приложении django пользователи могут загружать свои CSV-файлы для импорта данных в django. Он отлично работает для файлов Unicode CLRF.
Но есть две проблемы:
Когда файл не закодирован с помощью utf8, я продолжаю получать
'utf8' codec can't decode byte 0xdc in position 393: invalid continuation byte
. Я попытался решить это, используя следующий кодfile = codecs.EncodedFile(request.FILES['import'],"utf-8") dialect = csv.Sniffer().sniff(file.read(2048)) file.open() # seek to 0 reader = csv.reader(file,dialect=dialect)
Когда файл использует разрывы строки CR, они не распознаются или я получаю:
new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
. НоInMemoryUploadedFile
уже является открытым файловым объектом.
Моя проблема очень похожа на эту, но решение, упомянутое для пункта 1, у меня не сработало (как вы можете видеть, мой код очень похож), а на пункт 2 вообще нет ответа:
Обработка загруженного файла Django как UTF-8 с универсальными символами новой строки< /а>