среда, 16 сентября 2009 г.

MySQL - Проблемы c русской кодировкой

Только что писал небольшой скрипт, парсер для сайтов, и натолкнулся на проблему, что русские символы не записывались в таблицу MySQL. При update или insert в таблицу все символы записываются нормально, но как только встречается русский текст – он просто обрезается и всё.

Проверил в какой кодировке работает скрипт, в базе данных, в таблице атрибут character set стоял utf8, и collation был задан utf8_general_ci. Всё правильно. Значит проблема не в этом. Тогда попробовал при установке соединения с MySQL задавать «SET NAMES utf8», проверил – тоже нихрена, не помогло. Спросил у сотрудников – сразу сходу мне никто не ответил, в чём собственно проблема.

В итоге, после получаса копаний, всё-таки вставил заветную строчку

$query = iconv("cp1251", "UTF-8", $query);

и выполнил её непосредственно перед запросом к базе данных, и только тогда заработало. Чёт я не помню, чтобы у меня были такие проблемы с кодировками при запихивании в базу данных, но повозиться в этот раз пришлось.

1 комментарий:

  1. Кстати, забыл добавить, если вы не хотите, чтобы при конвертации iconv выкинул E_NOTICE с предупреждением об ошибке конвертации какого-то из символов, то нужно использовать ключ "//IGNORE".
    Тогда строка примет вид:

    $query = iconv("cp1251", "UTF-8//IGNORE", $query);

    ОтветитьУдалить

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting