在我的django应用程序中,用户可以上传他们的csv文件以将数据导入django。它适用于CLRF unicode文件。
但有两个问题:
如果文件未使用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 Linebreaks时,无法识别它们,或者我得到:new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
。但是InMemoryUploadedFile
已经是一个打开的文件对象。
我的问题与此问题非常相似,但针对第1点提到的解决方案对我不起作用(因为您可以看到我的代码非常相似)并且第2点根本没有得到回答:
Proccessing a Django UploadedFile as UTF-8 with universal newlines