我想处理来宾上传的文件,这里是视图代码:
def charset(request):
logging.info('charset')
name = request.GET['name']
file_path = os.path.join(settings.MEDIA_ROOT, name)
logging.info(file_path)
logging.info(type(file_path))
file1 = open(file_path.decode('utf8'), 'wb')
file1.write(b'test')
file1.close()
return HttpResponse('success')
但是发生了错误。回溯如下:
UnicodeEncodeError at /upload/charset/
'ascii' codec can't encode characters in position 27-28: ordinal not in range(128)
您可以访问:My Wrong Website
重复该错误我正在使用环境:
python 3.4.3
django 1.9.3
apache2 2.4.7
但是当我使用python3 manage.py runserver 0.0.0.0:8000
运行服务器时。它有效。
我怎样才能解决这个问题?感谢您的关注。您可以在网站github_of_my_django_tutorial上查看项目代码。
答案 0 :(得分:1)
您需要先将文件名编码为UTF-8:
name = name.encode("utf8")