@tmitry

Почему nginx отдает неверный заголовок ответа charset?

В настройках виртуального сервера nginx задана кодировка:
server {
    listen       80;
    server_name  example.dev;
    root         /Users/macbook/sites/example.dev/www;

    charset	 windows-1251;
    
    location / {
    ....
    }
}


Но сервер отдает неверный заголовок ответа - utf-8

user:~ macbook$ curl -I example.dev
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Wed, 02 Dec 2015 12:13:51 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.16
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache


Может быть кто-то сталкивался с аналогичной ситуацией?
  • Вопрос задан
  • 7807 просмотров
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
X-Powered-By: PHP/5.6.16
php переписывает заголовок Content-type
соответственно win-1251 будет только для статики у Вас
ищите в коде php
если между php и ngnix стоит еще back сервер (например apache) нужно еще и его конфиг проверить
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@simonnik
default_charset string
В PHP 5.6 и новее "UTF-8" является значением по умолчанию и используется как кодировка по умолчанию для функций htmlentities(), html_entity_decode() и htmlspecialchars(), если параметр encoding не указан. Значение default_charset также используется для указания кодировки по умолчанию для функций iconv, если конфигурационные опции iconv.input_encoding, iconv.output_encoding и iconv.internal_encoding не установлены, и для функций mbstring, если не установлены mbstring.http_input mbstring.http_output mbstring.internal_encoding.

Все версии PHP используют это значение как кодировку для стандартного заголовка Content-Type, отправляемого PHP, если этот заголовок не переопределен вызовом функции header().

Не рекомендуется устанавливать default_charset в пустое значение


А раз не рекомендуется значит в самих скриптах через header менять charset
header('Content-Type: text/html; charset=windows-1251');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы