UTF-8在nginx上无法正常工作

7
我有一个自托管的服务器,上面运行着nginx和PHP5-fpm,并且是在一台Debian(Raspbian wheezy)设备上。我的问题是UTF-8特殊字符(åäö)无法正常工作。我已经在网站头部设置了。所有文件都使用UTF-8编码而没有BOM。根据Fleshgrinder的答案,我已经添加了charset utf-8;到nginx.conf中,但没有结果。我该如何解决这个问题?
1个回答

17

您的文件也必须使用UTF-8编码,并且您发送的HTTP头比元标记更重要。

要通过nginx以UTF-8编码(HTTP头)传递所有内容,请执行以下操作:

# /etc/nginx/nginx.conf

http {
    charset utf-8;
}

但是重要的部分是,你的文件实际上必须以UTF-8编码,才能使任何东西正常工作。一个好的编辑器(例如Notepad2、Notepad++、NetBeans IDE、Adobe Dreamweaver等)可以让你更改文件的编码。


是的,这些文件都是utf-8编码,没有BOM。在nginx.conf中添加“charset utf-8;”并不能解决问题。我会把这个问题加到提问里。你所说的“HTTP头部”,具体指什么?我是新手。 - justanotherhobbyist
没事了,我用谷歌搜索解决了问题,只需要在文档顶部设置 <?php header('Content-type: text/html; charset=utf-8'); ?> 即可。感谢你的帮助。 - justanotherhobbyist
你也可以在你的 php.ini 文件中设置 default_charset = utf-8。很高兴能够提供帮助。 - Fleshgrinder
@justanotherhobbyist,Unicode标准既不要求也不建议在UTF-8中使用BOM。请避免使用Microsoft(不尊重标准),并在所有生态系统中使用通用标准UTF-8:符合规范的编辑器、符合规范的git和所有源代码(HTML、PHP、Javascript等)。 - Peter Krauss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接