django python3中的UnicodeEncodeError

时间:2016-05-27 09:00:22

标签: django python-3.x python-unicode

我想处理来宾上传的文件,这里是视图代码:

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上查看项目代码。

1 个答案:

答案 0 :(得分:1)

您需要先将文件名编码为UTF-8:

name = name.encode("utf8")