昨天买了服务器空间,由于服务器在国外,操作系统是英文版的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'
2.配置Nginx:
在nginx.config的http{..}中间加上:
charset utf-8;
最后重启apache,重启nginx,一切解决了,耶!
版权所有。转载本BLOG内任何文章,请以超链接形式注明出处。