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

本文记录了解决在英文版Ubuntu服务器上使用Apache和Nginx时出现的中文编码错误的过程。通过配置Apache和Nginx来指定UTF-8编码,最终成功上传带有中文名的文件。
1441





