Попробуйте изменить кодировку defualt на сервере в файле php.ini:
default_charset = "UTF-8"
также убедитесь, что вы отправляете правильные заголовки типа контента как utf-8
По моему опыту с utf-8, если вы правильно сконфигурируете модуль php mbstring и используете функции mbstring, а также убедитесь, что ваше соединение с базой данных использует utf-8, у вас не возникнет никаких проблем.
Часть базы данных может быть выполнена для mysql с помощью запроса "SET NAMES 'utf8'"
Я обычно запускал выходной буфер, используя mbstring для обработки буфера. Это то, что я использую на производственных сайтах, и это очень солидный подход. Затем отправьте буфер, когда закончите рендеринг вашего контента.
Дайте мне знать, если вам нужен код sampe для этого.
Еще один простой способ узнать, являются ли заголовки, отправляемые php или веб-сервером, неправильными заголовками, - это использовать меню view-> encoding в вашем браузере и посмотреть, является ли это utf-8. Если это не так, и вы переключаете его на utf-8, и все выглядит хорошо, то это проблема с вашими заголовками или типом контента. Если это уже utf-8, а текст испорчен, значит, что-то идет не так в вашем коде или подключении к БД. Если вы используете mysql, убедитесь, что используемые таблицы и столбцы также имеют вид utf-8