Русская кодировка в MySQL 5.х

  1. Сегодня мы рассмотрим, что нужно написать в конфигурационном файле /etc/my.cnf для того, чтобы настроить mysql стандартной сборки на работу с кодировкой cp1251 по умолчанию без всякой перекомпиляции.

    Рассмотрим пример конфига на основе MySQL 5.x.

    В раздел [mysqld] необходимо добавить следующее:

    Код:
    default-character-set=cp1251
    character-set-server=cp1251
    collation-server=cp1251_general_ci
    init-connect="SET NAMES cp1251"
    skip-character-set-client-handshake
    Две последние строки принудительно устанавливают кодировку cp1251 для всех запросов.

    В раздел [mysqldump] достаточно добавить только:

    Код:
    default-character-set=cp1251
    Этого достаточно, чтобы MySQL работал с windows-1251 кодировкой по умолчанию.

    Если же при импорте базы данных вместо русских букв выдаются иероглифы или знаки вопроса, это значит, что дамп был сделан в кодировке, отличной от cp1251. Переделайте дамп в cp1251 или перекодируйте его в нужную кодировку с помощью утилит iconv или recode.

    (c) dedic.ru

    Если у вас нет доступа к ini файлу MySQL, то при каждом подключении вашего скрипта к БД нужно выполнять:
    Код:
    mysql_query ( "SET NAMES нужная кодировка");
    mysql_query ( "SET collation_connection='нужная кодировка_general_ci'");
    mysql_query ( "SET collation_server='нужная кодировка_general_ci'");
    mysql_query ( "SET character_set_client='нужная кодировка'");
    mysql_query ( "SET character_set_connection='нужная кодировка'");
    mysql_query ( "SET character_set_results='нужная кодировка'");
    mysql_query ( "SET character_set_server='нужная кодировка'");
     
    1 человеку нравится это.

  2. Ошибка!

     
  3. NARKOZ,
    mysql_query () у тебя выполняется до подключения или после?

    Твоя ошибка говорит о том, что ты не указал пароль рута при подключении к базе данных.
     
  4. до подключения
    как можно обогнуть эту проблему? как коннектиться к бд?
     
  5. Мда. Если ты не знаешь, что перед использованием mysql_query нужно подключиться к БД, если ты даже не знаешь как подключиться к БД, ТО зачем тебе знать о проблемах кодировки? Тебе совершенно в другой топ. Читай учебники по php и mysql.
     
  6. Вставлю свои две копейки, если в винде, то все просто а вот в linux, например gentoo, который не имеет русской локали при установке, то нужно сначала ее добавить:

    смотрим что есть:
    Код:
    locale -a
    
    добавляем в /etc/locale.gen
    Код:
    	ru_RU.UTF-8 UTF-8
    	ru_RU.CP1251 CP1251
    
    генерим:
    Код:
    locale-gen
    
    проверяем:
    Код:
    locale -a
    
     
    1 человеку нравится это.