Django出现的'ascii' codec can't encode characters in position...的解决办法

昨天买了服务器空间,由于服务器在国外,操作系统是英文版的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内任何文章,请以超链接形式注明出处。

你可能感兴趣的:(apache,nginx,django,服务器,import,Codec)