Тема: Мистика с кодировкой
Приветствую.
Понимаю, темы о кодировке избиты. Но с этой проблемой уже долго мучаюсь.
Дано:
БД "base" (кодировка: utf8_general_ci)
Таблица "pages" (сравнение: utf8_general_ci)
Поле "pages"."cont" (TEXT, utf8_general_ci)
Файл "index.php" в utf-8 (без bom)
index.php работает посредством mysqli с БД; посылает запрос вида:
UPDATE pages SET `name` = "article", `cont` = "Русский lang" WHERE name="article"
(name – PRIMARY KEY, VARCHAR(256))
Позже эта строка забирается из БД и выводится echo. И что я вижу? – Вопросительные знаки вместо «Русский».
Понимаю, что где-то соединение барахлит. Ставлю SET NAMES "utf8" и SET CHARACTER SET "utf8" – то же самое. Пробую эту же запись отредактировать в PMA – все нормально: русские символы сохранились нормально.
Проверил, что же передает форма на сервер POST`ом в моем файле index.php... Все нормально:
mb_detect_encoding($_POST['cont']) == 'UTF-8';
Стока перед передачей отображается в выводе нормально:
echo $_POST['cont'];
– выводит «Русский lang»...
но стоит этому запросу попасть на сервер MySQL от моего index.php – русские символы ломаются. Если тот же запрос отсылает PMA – все отрабатывает на ура.
Прошу помочь решить загадку.