Django FileField 上传中文文件乱码的问题解决
Posted renfengjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django FileField 上传中文文件乱码的问题解决相关的知识,希望对你有一定的参考价值。
自己写了个自动化运维的小程序,使用docker+django发布项目,base image为centos7,python版本为2.7,django 1.11.5
由于项目中有上传附件的功能,发现上传包含中文的文件的时候,会出现乱码的问题。
寻遍网络,各种解决方案,包括
修改setting.py,修改相应的views.py加入
import sys reload(sys) sys.setdefaultencoding( 'utf8' )修改docker运行的环境变量设置字符集
centos中已经安装了中文支持,并且上面的方案都无法解决问题。
还好,因为这个项目中只有这一个模块是需要上传附件的。
所以,可以选择修改源码的方式来解决问题。
根据报错,找到最后调用的python文件以及行数。
/usr/lib64/python2.7/genericpath.py 18行报错 os.stat(path) 修改为 os.stat(path.encode("utf-8"))再次上传发现
/usr/lib/python2.7/site-packages/django/core/files/storage.py 347行报错 fd = os.open(full_path, flags, 0o666) 修改为 fd = os.open(full_path.encode("utf-8"), flags, 0o666)最后问题得到解决。
上传文件乱码问题,在网上没有找到解决方法,故记录下来,希望帮助更多的网友。
以上是关于Django FileField 上传中文文件乱码的问题解决的主要内容,如果未能解决你的问题,请参考以下文章