ubuntu 16.04
python3.5
django2.0
使用django ImageField 字段 在admin后台页面上传图片时,如果图片文件名称中含有中文字符,则报错,具体错误如下:
如果你使用了网络上的各种解决方案后,还未真正解决问题,那么应该是系统字符编码设置问题。
1.查看当前系统字符编码
root@ubuntu~:locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN.utf8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8
2.查看当前系统支持的字符编码
root@ubuntu~:locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
3.查看locale文件
root@ubuntu~:cat /etc/default/locale
LANG="en_US"
4.执行locale-gen zh_CN.UTF-8拉取中文编码(需要root权限)
root@ubuntu~:locale-gen zh_CN.UTF-8
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
Generating locales (this might take a while)...
zh_CN.UTF-8... done
Generation complete.
5.验证系统支持的字符集,是否已经增加了zh_*等中文字符集
root@ubuntu~:locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
...
zh_CN.utf8
6.修改文件/etc/default/locale内容为:
LANG=zh_CN.UTF-8
7.执行sudo dpkg-reconfigure locales命令,进入操作界面,具体操作流程:
选中 zh_CN GB2312,zh_CN.GBK GBK,zh_CN.UTF-8 UTF-8 (按空格就是选中);
然后tab键到ok,点击ok以后会跳转到下一界面,选中zh_CN.UTF-8,然后ok就可以了
参见博文:https://www.cnblogs.com/yjt1993/p/10343075.html