我试着去弄清楚为什么nginx的正试图加载一些静态图像与错误的编码静态文件。例如:Nginx的:UTF8编码字符导致
从error.log中:
2012年8月8日21时十四分46秒[错误] 17968#0:* 71的open() “/家庭/网络/ MYDOMAIN的.com/WEB-INF /图像/ productimage /图像ø.png “ 失败(2:没有这样的文件或目录),客户端:XXXX,服务器: www.mydomain.com,请求:” GET /图像/ productimage/image-%C3%B8.png HTTP/1.1“,host:”www.mydomain.com“,referrer: ”http://www.mydomain.com/“
在我的nginx.conf文件中,我添加了以下内容;
source_charset utf-8;
charset utf-8;
但不幸的是,这并没有解决它。
我的虚拟主机配置文件使用以下服务中的图像文件;
location /images/
{
alias /home/www/mydomain.com/WEB-INF/images/;
expires 15d;
}
我正在使用ubuntu,将LANG环境变量设置为这样;
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
任何线索?谢谢 !
嗨,马克,感谢您的回复,我已经通过的Perl通过您的最后一个命令行测试的转义和Perl也似乎输出:/images/productimage/image-ø.png,而不是期望/图片/ productimage/image-ø.png,似乎你的建议是正确的,使用编码/images/productimage/image-%F8.png确实加载图像,所以在perl/nginx的情况下,什么决定了默认的解码字符集? – Marius 2012-08-08 20:02:36
Marius,我已经将它添加到我的答案中:“检查包含图像引用的HTML页面的编码。查看HTTP标头和元标签。确保它明确声明自己为UTF-8。“ – 2012-08-08 20:09:45
这就是解决方案的一部分,但在这种情况下,我想知道,当我直接从浏览器调用url时,并未包含在html页面中,用%C3%B8编码的urlencode,配置用于解码的字符集,nginx或者ubuntu中可配置的编码。 – Marius 2012-08-08 20:42:13