Только что писал небольшой скрипт, парсер для сайтов, и натолкнулся на проблему, что русские символы не записывались в таблицу MySQL. При update или insert в таблицу все символы записываются нормально, но как только встречается русский текст – он просто обрезается и всё.
Проверил в какой кодировке работает скрипт, в базе данных, в таблице атрибут character set стоял utf8, и collation был задан utf8_general_ci. Всё правильно. Значит проблема не в этом. Тогда попробовал при установке соединения с MySQL задавать «SET NAMES utf8», проверил – тоже нихрена, не помогло. Спросил у сотрудников – сразу сходу мне никто не ответил, в чём собственно проблема.
В итоге, после получаса копаний, всё-таки вставил заветную строчку
$query = iconv("cp1251", "UTF-8", $query);
и выполнил её непосредственно перед запросом к базе данных, и только тогда заработало. Чёт я не помню, чтобы у меня были такие проблемы с кодировками при запихивании в базу данных, но повозиться в этот раз пришлось.
Кстати, забыл добавить, если вы не хотите, чтобы при конвертации iconv выкинул E_NOTICE с предупреждением об ошибке конвертации какого-то из символов, то нужно использовать ключ "//IGNORE".
ОтветитьУдалитьТогда строка примет вид:
$query = iconv("cp1251", "UTF-8//IGNORE", $query);