Pull to refresh

Проблема UTF-8 Byte Order Mark или кириллица в крякозябах

Reading time2 min
Views2.6K
Столкнулся с проблемой некорректного отображения кириллических шрифтов в браузере, а точнее браузер неправильно определял кодировку. Краткий анализ показал, что данное неудобство проявляется только при включении плагина ZF debug. Кинув взгляд на исходный код страницы увидел, что стили и скрипты свои плагин подключает сразу же после открывающего тега <head>, то есть до метатега с информацией о кодировке страницы, что, видимо, не совсем правильно.



Для исправления ситуации необходимо подправить файл library\ZFDebug\Controller\Plugin\Debug.php следующим образом(выделено черным цветом)

protected function _headerOutput() {
    $collapsed = isset($_COOKIE['ZFDebugCollapsed']) ? $_COOKIE['ZFDebugCollapsed'] : 0;
 
    return ('
        <style type="text/css" media="screen">
 …
        </script> </head>'
);
}
 


protected function _output($html)
{
    ...
    $response->setBody(preg_replace('/(<\/head>)/i', '$1' . $this->_headerOutput(), $response->getBody()));
    ...
}


Все, теперь <meta http-equiv="content-type" content="text/html; charset=utf-8" /> будет стоять сразу после открывающего тега <head>.

п.с. Проблема так же решается если принудительно указывать BOM в начале файла, но, к примеру, PHP Storm не умеет(на данный момент) сохранять его. Однако же BOM не необходим для браузерных приложений, даже излишен, исходя из документа "Use of BOM is neither required nor recommended for UTF-8"
Tags:
Hubs:
Total votes 1: ↑1 and ↓0+1
Comments1

Articles