- Add the following line to /etc/apt/sources.list:
deb https://nginx.org/packages/ubuntu/ trusty nginx
- Install GPG key of the repository:
# wget https://nginx.org/keys/nginx_signing.key # sudo apt-key add nginx_signing.key
- Update the package index:
# sudo apt-get update
- Install nginx deb package:
# sudo apt-get install nginx -y
sendfile on;
tcp_nopush on;
server {
listen 9000; #端口
server_name localhost; #服务名
charset utf-8; # 避免中文乱码
#charset gbk,utf-8,gb2312,gb18030 可以实现多种编码识别
location / {
root /oa/files; #显示的根索引目录,注意这里要改成你自己的,目录要存在
autoindex on; #开启索引功能
autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
autoindex_localtime on; # 显示本机时间而非 GMT 时间
}
}
问题描述:
网站访问时,并不能正常显示汉字,而是很多问号,如下图
这种问题一看就是字符集不对。 在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测试,结果正常了。浏览器的页面也正常了。