昨天买了服务器空间,由于服务器在国外,操作系统是英文版的Ubuntu11,多多少少会遇到编码的问题
今天遇到的问题是上传一个带有中文名的照片的时候,出现了以下错误:“'ascii' codec can't encode characters in position 50-52: ordinal not in range(128)”
sudo apt-get install language-pack-zh-hans
执行后还是不行,这下没头绪了
网上搜了下,尝试了以下几个解决办法:
1. 加上
import sys reload(sys) sys.setdefaultencoding('utf-8')结果还是失败
2. 去Python27的site-package加文件,注明:
import sys reload(sys) sys.setdefaultencoding('utf-8')
结果还是不行
解决办法:
最后首先在django官网上看到一个bug,说的就是此事:https://code.djangoproject.com/ticket/6009
随后在stackoverflow上找到了解决办法:
http://stackoverflow.com/questions/3715865/unicodeencodeerror-ascii-codec-cant-encode-character
1. 配置Apache:
在/etc/apache2/envvars文件加上:
export LANG='en_US.UTF-8' export LC_ALL='en_US.UTF-8'
在nginx.config的http{..}中间加上:
charset utf-8;