gpt4 book ai didi

python - Django 1.4 - django.db.models.FileField.save(filename, file, save=True) 产生非 ascii 文件名错误

转载 作者:行者123 更新时间:2023-12-01 05:24:01 27 4
gpt4 key购买 nike

我正在使用 Django 1.4 的 django.db.models.FileField 制作文件上传功能

当我尝试上传名称包含非 ASCII 字符的文件时,会产生以下错误。

'ascii' codec can't encode characters in position 109-115: ordinal not in range(128)

实际代码如下

file = models.FileField(_("file"), max_length=512, upload_to=os.path.join('uploaded', 'files', '%Y', '%m', '%d'))

file.save(filename, file, save=True) #<- This line produces the error above, if 'filename' includes non-ascii character

如果我尝试使用 unicode(filename, 'utf-8') 而不是 filename,则会产生以下错误

TypeError: decoding Unicode is not supported

如何上传名称包含非 ASCII 字符的文件?

我的环境信息:

sys.getdefaultencoding() : 'ascii'

sys.getfilesystemencoding() : 'UTF-8'

using Django-1.4.10-py2.7.egg

最佳答案

您需要使用.encode()对字符串进行编码:

file.save(filename.encode('utf-8', 'ignore'), file, save=True) 

关于python - Django 1.4 - django.db.models.FileField.save(filename, file, save=True) 产生非 ascii 文件名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com