Как исправить ошибки кодировки при выводе данных PHP?

Есть форма, в которую вводится информация. После отправки информация вставляется в БД, а затем выводится на главной странице сайта. Если написать информацию на русском языке, то в БД она вставляется знаками вопроса и выводится потом точно так же на странице. Как это исправить?

В файле подключения к MySQL у меня set_names и прочие операторы задания кодировки прописаны.
  • Вопрос задан
  • 547 просмотров
Решения вопроса 1
nalomenko
@nalomenko
Руководитель отдела разработок в студии «Lava»
Настройте верно кодировки клиента и выдаваемого результата:

set character_set_client='utf8';
set character_set_results='utf8';
set collation_connection='utf8_general_ci';


Кодировка HTML-страницы, содержащей Вашу форму, также, соответственно, должна быть UTF-8.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
EnterSandman
@EnterSandman
Эникей
а сама база и таблицы в какой кодировке?
Ответ написан
@FanatPHP
Чебуратор тега PHP
  1. set names должна быть не просто "прописана", а отражать кодировку сайта.
  2. никаких "прочих операторов задания кодировки" в БД писать не надо.
  3. никакие html теги на кодировку не влияют. Кодировка страницы задается только НТТР заголовком.
  4. кодировка таблиц должна поддерживать кодировку клиента. К примеру, cp1251 сможет показать почти все буквы, введенные со страницы с кодировкой utf-8, но latin1 - уже нет
  5. правила именования кодировок в mysql отличаются от общепринятых, надо быть внимательнее при их указании.
  6. Подробнее читать здесь: phpfaq.ru/charset


Почитал комментарии.
В общем, с твоих слов все должно работать. Так что будем проверять их.
Выполни эти два запроса и смотри, где ты наврал
var_dump($db->query("SELECT @@character_set_results")->fetch_assoc());
var_dump($db->query("SHOW CREATE TABLE твоятаблица")->fetch_assoc());
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы