Python 3.x Django在文件字段中上载文件时文件名编码不正确
我正在使用带有非ascii字符(印地语)的ajax上传一个文件。上传后,保存的文件名不正确,而不是Python 3.x Django在文件字段中上载文件时文件名编码不正确,python-3.x,django,django-models,file-upload,Python 3.x,Django,Django Models,File Upload,我正在使用带有非ascii字符(印地语)的ajax上传一个文件。上传后,保存的文件名不正确,而不是संज्ञा显示सजञ Models.py- class PostFile(models.Model): file = models.FileField(upload_to='posts/files/%Y/%m/%d') timestamp = models.DateTimeField(auto_now_add=True) views.py- def ajax_add_post_f
संज्ञा代码>显示सजञ代码>
Models.py-
class PostFile(models.Model):
file = models.FileField(upload_to='posts/files/%Y/%m/%d')
timestamp = models.DateTimeField(auto_now_add=True)
views.py-
def ajax_add_post_file(request):
file = request.FILES['file']
print(file.name.encode()) # get correct filename encoding
model_object = PostFile.objects.create(file=file)
print(connection.queries[-1]['sql'].encode()) # get sql
在终端上提供以下输出-
b'\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x9c\xe0\xa5\x8d\xe0\xa4\x9e\xe0\xa4\xbe.pdf'
b'INSERT INTO "posts_postfile" ("file", "timestamp") VALUES (\'posts/files/2020/09/21/\xe0\xa4\xb8\xe0\xa4\x9c\xe0\xa4\x9e.pdf\', \'2020-09-21T12:23:02.184338+00:00\'::timestamptz) RETURNING "posts_postfile"."id"'
正如您所看到的,这两个文件的文件名编码是不同的。我正在使用Django 1.11
,python 3
,postgres 10
和UTF8
编码数据库。如何解决这个问题