django上传文件名为中文报错的解决办法
2020-04-30 本文已影响0人
swotpp
报错内容:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 52-54: ordinal not in range(128)
报错文件:
File "/srv/.virtualenvs/letebo/lib/python2.6/genericpath.py", line 18, in exists
st = os.stat(path)
需要更改 /etc/apache2/envvars 中的 LANG 设置,否则不能正确处理中文附件和图片。
## The locale used by some modules like mod_dav
#export LANG=C
#export LANG=C.UTF-8
export LANG=zh_CN.utf8
#export LANG=zh_SG.utf8
查看linux可以用的设置 :
locale -a 可以设置成什么样的 locale
locale -a 返回举例:
C
C.UTF-8
POSIX
zh_CN.utf8
如果没有 zh_CN.utf8,可以用下面的命令生成:
locale-gen zh_CN.utf8
查看系统支持哪些字符集:
locale -m 支持哪些字符集
locale -a 查看有 zh_CN.UTF8 加入后需要 reboot 电脑或是执行:
apache2ctl -k stop
apache2ctl -k star
apache2ctl -k restart 不管用,因为父进程不死。