Пожалуйста, прочитайте http://mysqldump.azundris.com/archives/60-Handling-character-sets.html
Краткая версия: В строковых полях MySQL есть присоединенный набор символов, а также соединения.Набор символов соединения представляет собой представление набора символов клиента на стороне сервера, это то, что сервер думает, что клиент использует.
Краткий способ установить набор символов соединения - это SET NAMES utf8, как упомянуто вкомментарий выше.
Если набор символов поля отличается от набора символов подключения, MySQL попытается преобразовать поле в набор символов подключения.Он не будет пытаться сделать это, если оба равны.
Способ отладки, как показано в статье, - посмотреть на поле с помощью функции HEX (), проверяя, что на самом деле на диске.данные есть, и если они верны.
Затем вы подключаетесь к базе данных, установив для вашего соединения правильный клиентский набор символов с помощью SET NAMES utf8, если вы на самом деле работаете с utf8, как вы утверждаете.Затем снова выведите HEX () строки, она должна быть такой же.Если это не так, соединение не имеет правильного набора символов, например, если вы забыли установить SET NAMES utf8.
Вы можете настроить набор символов подключения по умолчанию в MySQL, используя определение SET NAMES изруководство, http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
Если вы поместите это в раздел mysqld вашего my.cnf и перезапустите сервер, SET NAMES больше не понадобятся, так как теперь соединение по умолчанию будет иметьutf8.