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

12 篇文章 0 订阅

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值