在 Nginx PHP 虚拟主机上设置字符集不起作用

Setting Charset on Nginx PHP virtual host not working

我试过这样设置虚拟主机的字符集:

server {
        root /var/www/mywebsite.com;

...

        charset iso-8859-1;
        override_charset on;

...

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                charset iso-8859-1;
                override_charset on;

        }
}

我已经在 serverlocation 上指定了 charsetoverried_charset,但它仍然以 UTF-8 发送 headers。

我不得不修改 /etc/php/7.2/fpm/php.ini 中的 php.ini 文件以在其中指定 default_charset = "iso-8859-1"

但我想让我的 php 设置为 UTF-8 并在 Nginx 上仅指定一个虚拟主机 iso-8859-1。

在 Apache 上我们可以做:

<VirtualHost mywebsite.com:80>
...
    Header set Content-Type "text/html; charset=iso-8859-1"
</VirtualHost>

如何在 Nginx 上做同样的事情?

谢谢。

这是一个 PHP 问题,不是 Nginx。默认的 PHP 字符集配置设置为 "utf-8",您希望让它保持原样。所以要覆盖它,请在脚本的开头添加:

ini_set('default_charset', 'iso-8859-1');