django上传文件名为中文报错的解决办法

报错内容:

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 不管用,因为父进程不死。

你可能感兴趣的:(django上传文件名为中文报错的解决办法)