Этот DDL, который вы упомянули, имеет отношение к сопоставлению, а не к набору символов.Правильное утверждение будет следующим:
ALTER TABLE Clients CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Вам все еще нужно убедиться, что клиентская библиотека (libmysql или любой другой драйвер, используемый PHP) не транскодирует данные обратно в ISO-8859.mysql_set_charset ('utf8') явно установит кодировку клиента в UTF-8.Кроме того, вы можете отправить SET NAMES UTF8;сразу после подключения к базе данных.Чтобы сделать это неявно, вы можете изменить блок my.cnf [client], чтобы в качестве кодировки символов клиента использовался utf-8 (и /etc/init.d/mysql reload для применения).В любом случае, убедитесь, что клиент не манипулирует полученными результатами.
[клиент] default-character-set = utf8
Вам не нужно использовать utf8_decode, если вы используетеmbstrings.Следующая конфигурация php.ini должна обеспечивать поддержку UTF-8 на стороне PHP:
mbstring.internal_encoding = utf-8
mbstring.http_output = utf-8
mbstring.func_overload = 6
Наконец, когда вы отображаете результаты в HTML, убедитесь, что кодировка страницы явно UTF-8.