Если сервер отдаёт в заголовке не то же самое, что написано в метатэги, то браузер имеет полное право игнорировать метатэг. Плюс ещё в браузерах сейчас есть автодетект кодировок, который иногда тоже доставляет забавностей. Правильнее определять кодировку с помощью своего заголовка:
Header("Content-Type: text/html; charset=utf-8");
Но в целом практика хардкодить кодировку в своём коде неправильна, всё это надо делать настройкой веб-сервера.