- 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測試,結果正常了。瀏覽器的頁面也正常了。