Содержимое плейсхолдера в неправильной кодировке
Здравствуйте!
Помогите решить проблему, пожалуйста, второй день бьюсь.
На странице существовал вывод через pdopage, все прекрасно работало, но возникла потребность в этот вывод кое что добавить и я сделал этот вывод в плейсхолдер и этот плейсхолдер передаю в снипет.
С полученным плейсхолдером снипет не работал, как в последствии выяснялось, что плейсхолдер приходит в кодировке ASCII.
Проверил
1-БД. Все таблицы utf8_general_ci
2-В конфиге соедиенение с базой тоже UTF-8
3-В настройках сайта тоже стоит UTF-8
4-Хейдеры приходят в браузер тоже в UTF-8
Решить проблему удалось, только если в самом снипете вызывать
Думал, что можно решить так
Если в снипете написать
Казалось бы, что все указывает на то, что как то криво определяет кодировку mb_detect_encoding, но следующие функции и множество вариаций на эту тему всегда выдают FALSE, хотя того что они ищут, там предостаточно (div,href,a)
Идеи закончились.
Прошу помочь, подкинуть идею.
Помогите решить проблему, пожалуйста, второй день бьюсь.
На странице существовал вывод через pdopage, все прекрасно работало, но возникла потребность в этот вывод кое что добавить и я сделал этот вывод в плейсхолдер и этот плейсхолдер передаю в снипет.
С полученным плейсхолдером снипет не работал, как в последствии выяснялось, что плейсхолдер приходит в кодировке ASCII.
echo ' Кодировка страницы - '.mb_internal_encoding();
echo ' Кодировка контента - '.mb_detect_encoding($content);
Кодировка страницы — UTF-8 Кодировка контента — ASCIIПроверил
1-БД. Все таблицы utf8_general_ci
2-В конфиге соедиенение с базой тоже UTF-8
3-В настройках сайта тоже стоит UTF-8
4-Хейдеры приходят в браузер тоже в UTF-8
Решить проблему удалось, только если в самом снипете вызывать
$content = $modx->runSnippet('pdoPage', array( ...
, тогда все в UTF-8, но хотелось бы оставить его вызов в шаблоне.Думал, что можно решить так
$content = mb_convert_encoding($content, 'UTF-8', 'ASCII');
//и даже так
$content = iconv ( 'UTF-8', 'ASCII//TRANSLIT', $content );
Все равно выдает, что кодировка контента ASCII.Если в снипете написать
echo '<xmp>';
echo $content;
echo '</xmp>';
То на странице в браузере я вижу нормальный HTML с русскими буквами, хотя если ASCII то должны быть кракозябры.Казалось бы, что все указывает на то, что как то криво определяет кодировку mb_detect_encoding, но следующие функции и множество вариаций на эту тему всегда выдают FALSE, хотя того что они ищут, там предостаточно (div,href,a)
$skipChars = mb_strpos($content, $findTag, $skipChars,'UTF-8');
$skipChars = strpos($content, $findTag, $skipChars);
$skipChars = stripos($content, $findTag, $skipChars);
Опять же напомню, что снипет отлично работает при вызове pdopage непосредственно из самого снипета, что исключает проблемы с ошибками в самом коде снипета.Идеи закончились.
Прошу помочь, подкинуть идею.