最让程序员头痛的事莫过于此


问题描述:

网站访问时,并不能正常显示汉字,而是很多问号,如下图

这种问题一看就是字符集不对。 在IE浏览器下打开此站点,然后点击右键,把字符集修改为gbk,则显示正常,这样肯定是不行的,总不能让所有用户自己去设置浏览器吧。 所以还得从服务端去入手。

先curl测试:

HTTP/1.1 200 OK

Server: nginxDate: Wed, 19 Jul 2017 08:32:56 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-aliveVary: Accept-Encoding

X-Powered-By: PHP/5.6.30

发现charset为UTF-8,只要把它修改为gbk即可。 所以修改虚拟主机配置文件,在里面增加一行

charset=gbk;

重启nginx服务后,问题依旧。但curl一个静态文件字符编码变为了gbk,所以怀疑到了php设置。

/usr/local/php/bin/php -i |grep charset

结果如下:

default_charset => UTF-8 => UTF-8

打开php配置文件 /usr/local/php/etc/php.ini 搜索charset,的确有这样的配置:

default_charset = “UTF-8”

把它改为

default_charset = “”

再重启php-fpm服务

/etc/init.d/php-fpm restart

再次curl测试,结果正常了。浏览器的页面也正常了。