11๐
As mentioned above, the code snippet I provided was in fact working as intended โ the problem was with my terminal, and not with python encoding.
If your view needs to access a UTF-8 UploadedFile
, you can just use utf8_file = codecs.EncodedFile(request.FILES['file_field'],"utf-8")
to open a file object in the correct encoding.
I also noticed that, at least for InMemoryUploadedFile
s, opening the file through the codecs.EncodedFile
wrapper does NOT reset the seek()
position of the file descriptor. To return to the beginning of the file (again, this may be InMemoryUploadedFile
specific) I just used request.FILES['file_field'].open()
to send the seek()
position back to 0.
3๐
I use the csv.DictReader and it appears to be working well. I attached my code snippet, but it is basically the same as another answer here.
import csv as csv_mod
import codecs
file = request.FILES['file']
dialect = csv_mod.Sniffer().sniff(codecs.EncodedFile(file,"utf-8").read(1024))
file.open()
csv = csv_mod.DictReader( codecs.EncodedFile(file,"utf-8"), dialect=dialect )
- External django redirect with POST parameters
- Why does Django Queryset say: TypeError: Complex aggregates require an alias?
- Django DateTimeField auto_now_add not working
- PyCharm: How to switch to regular HTML comments (Ctrl+Slash) in Django
- Django annotate specific keys in json fields
- Serving root-level static files on Heroku with Django?