我正在使用Django 1.4的django.db.models.FileField进行文件上传功能
当我尝试上传名称包含非ASCII字符的文件时,在下面产生错误。
'ascii'编解码器无法在位置109-115处编码字符:无序号
范围内(128)
实际代码如下
file = models.FileField(_(“ file”),
max_length = 512,
upload_to = os.path.join('已上传','文件','%Y','%m','%d'))
file.save(filename,file,save = True)# 以上,如果“文件名”包含非ASCII字符
如果我尝试使用unicode(filename, 'utf-8')
而不是filename
,则会在下面产生错误
TypeError:不支持解码Unicode
如何上传名称中包含非ASCII字符的文件?
我的环境信息:
sys.getdefaultencoding():'ascii'
sys.getfilesystemencoding():'UTF-8'
使用Django-1.4.10-py2.7.egg
最佳答案
您需要使用.encode()编码字符串:
file.save(filename.encode('utf-8', 'ignore'), file, save=True)