PHP и Unicode MySQL - Проблема с русским языком

Тема в разделе "PHP", создана пользователем DiX2007, 5 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. DiX2007

    DiX2007 Создатель

    Регистр.:
    2 сен 2007
    Сообщения:
    20
    Симпатии:
    3
    Как на PHP записать значение в таблицу БД mySQL (Unicode) на русском языке?

    Кодировка БД и таблиц: utf8_unicode_ci
    Тип таблиц: InnoDB

    При попытке записи русских значений записываются кракозябры. Для записи использую следующий код:
    PHP:
    $db mysql_connect("сервер:3306","логин","пароль");
    mysql_select_db("название_бд",$db);
    mysql_query("INSERT INTO log (LGDATE, LGMEMO) VALUES (NOW(), 'Русский текст')",$db);
    P.S. Если это важно, то сервер mysql удаленный (не localhost)
     
  2. waldicom

    waldicom Создатель

    Регистр.:
    15 мар 2009
    Сообщения:
    41
    Симпатии:
    3
    После mysql_connect(...) выполни
     
  3. DiX2007

    DiX2007 Создатель

    Регистр.:
    2 сен 2007
    Сообщения:
    20
    Симпатии:
    3
    Не помогло, после этой команды вместо русских символов записываются пустые строки. :(

    У кого-нибудь есть еще варианты?
     
  4. jer2

    jer2 Писатель

    Регистр.:
    4 июн 2009
    Сообщения:
    5
    Симпатии:
    1
    SET NAMES 'charset', где charset - кодировка файла со скриптом. Если windows1251, то SET NAMES 'cp1251'.
    Или файл скрипта в UTF8 перекодировать.
     
    DiX2007 нравится это.
  5. lesorub

    lesorub Жаббервог

    Регистр.:
    22 дек 2008
    Сообщения:
    325
    Симпатии:
    280
    Что показывает?
     
    DiX2007 нравится это.
  6. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    Это тебе при SELECT выводит кракозябры, либо ты в phpmyadmin смотришь значения полей ?

    Если второе то все ок, так и должно быть.
    Просто пхпадмин так их отображает (соответственно через него поля с утф8 лучше вообще не редактировать.)
     
  7. DiX2007

    DiX2007 Создатель

    Регистр.:
    2 сен 2007
    Сообщения:
    20
    Симпатии:
    3
    Ну все остальные строки он же нормально отображает, а в них тоже Юникод

    SELECT тоже выводит кракозябры, хотя в моем случае это не особо важно т.к. он в моих запросах не используется.

    Добавлено через 4 минуты
    Всем большое спасибо, проблема решилась с помощью команды

    PHP:
    mysql_query("SET NAMES cp1251");
     
  8. [Гилыч]

    [Гилыч] Постоялец

    Регистр.:
    5 авг 2008
    Сообщения:
    57
    Симпатии:
    17
    cразу уж на будущее потомкам - всё зависит от кодировки самого PHP скрипта, если он сохранен в кодировке win1251, то и комманда mysql_query("SET NAMES cp1251"), если бы был сам скрипт в кодировке utf-8, то и команда не нужна.....
     
  9. lesorub

    lesorub Жаббервог

    Регистр.:
    22 дек 2008
    Сообщения:
    325
    Симпатии:
    280
    По данной команде мускула. В чем глюк сам до сих пор не понял. Если баз utf8, скрипт utf8 и данные utf8, при вызове "SET NAMES UTF8" возникают крякозябры на выходе в другом скрипте. Без нее все нормально. Так и не понял в чем дело может кто знает?
     
  10. max-oligarh

    max-oligarh Постоялец

    Регистр.:
    4 май 2009
    Сообщения:
    68
    Симпатии:
    2
    нужно смотреть my.cnf на сервере, хотя посмотри внимательно - правильна ли кодировка у самих таблиц?
     
Статус темы:
Закрыта.