За последние 24 часа нас посетили 20945 программистов и 1622 робота. Сейчас ищут 1563 программиста ...

Проблема с записью кириллицы в БД

Тема в разделе "PHP и базы данных", создана пользователем sssvladimir, 20 мар 2010.

  1. sssvladimir

    sssvladimir Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    2
    Симпатии:
    0
    Буду благодарен за любую помощь, сам начал заниматься сайтостроительством недавно, поэтому не знаю в чём может быть проблема.
    Постараюсь предоставить максимум информации:
    БД создана в UTF-8

    Таблицы созданы с использованием ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

    Сопоставление соединения с MySQL: utf8_general_ci

    character_set_client utf8
    character_set_connection utf8
    character_set_database utf8
    character_set_filesystem binary
    character_set_results utf8
    character_set_server cp1251
    character_set_system utf8

    PHP скрипт:
    $includes[content]="
    ".iif($error_msg,"<script>alert('$error_msg');</script>")."
    <div align=\"center\">
    <form action=\"index.php?view=account&ac=new_fad&action=add&".$url_variables."\" method=\"post\" onSubmit=\"submitonce(this)\">
    <table>
    <tr>
    <td>Title: </td>
    <td><input type=\"text\" name=\"title\" value=\"$title\"></td>
    </tr>
    <tr>
    <td>Target Url: </td>
    <td><input type=\"text\" name=\"target\" value=\"$target\"></td>
    </tr>
    <tr>
    <td>Description: </td>
    <td><textarea name=\"fad\">$fad</textarea></td>
    </tr>
    <tr>
    <td colspan=2 align=\"center\"><input type=\"submit\" value=\"Add Featured Ad\"></td>
    </tr>
    </table>
    </div>
    Он вводит данные в БД, причём вот в чём парадокс: title нормально сохраняется на русском, а вот Description кракозябрами...
    Если в ручную через phpmyadmin переписать кракозябры на русский, то он нормально отображается.

    Соединение с БД:
    function connect($thehost, $thedb, $theuser, $thepwd) {
    $this->Host=$thehost;
    $this->Database=$thedb;
    $this->User=$theuser;
    $this->Password=$thepwd;

    if ( 0 == $this->Link_ID ) {
    $this->Link_ID=mysql_connect($this->Host, $this->User, $this->Password);
    if (!$this->Link_ID) {
    $this->halt("Link-ID == false, connect failed");
    }
    if (!mysql_query(sprintf("use %s",$this->Database),$this->Link_ID)) {
    $this->halt("cannot use database ".$this->Database);
    }
    if (!mysql_query("SET NAMES UTF8");
    }
    }


    Я уже в отчаинии! Доступа к настройкам сервера нет.
     
  2. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    а как вы получаете эти title и description? я так понимаю, что title получаете в нужной кодировке, а description - нет.

    проверьте, чтоб была указана кодировка утф-8 в заголовке html, а также кодировка самих файлов с кодом. у меня была похожая проблема. решилась именно таким образом.
     
  3. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    dots_rei
    очень хочется посмотреть на то, что ты ваяешь (без стёба и приколов)
     
  4. sssvladimir

    sssvladimir Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    2
    Симпатии:
    0
    именно так, на сайте есть форма, где сам пользователь вводит информацию:
    заголовок и описание.
    Скрипт заимствован, перевожу его сам, сама страница в utf8 без bom.

    из одной формы кириллица записывается в бд нормально, а из другой кракозябры....
    у меня уже паника, известных методов уже не осталось
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а поля таблиц?
    =)

    покажи SHOW TABLE?
     
  6. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    я уже давно понял что самый лучший стандарт utf-8
    и желательно чтобы все это поняли поскорее...чтобы был единый стандарт и слово кракозябра все забыли.
    у меня в программе читаются любые форматы , но сохраняется намеренно только в utf-8 и вариант выбора кодировки намеренно удалён.
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Плохому танцору...
    Мне и на win 1251 не кисло живется)
     
  8. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    Апельсин - и ничего не мешает ? .. сочувствую :)

    (блин вторая тема и и все я на тя наехать пытаюсь ... но сорри - это не личное, это против мысли твоей, а не тебя .. ;-))

    ютф явно удобнее, особенно когда количество языков начинает увеличиваться на сайте лавинообразно ....
    а пока маленькие проекты, и без систем поиска типа сфинкс и один язык .. то да цп1251 в принципе можно ..
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    nimistar
    Ога, а как же мультибайтовые функции для утф? Не подключил библиотеку и ничего не работает. Как никак - тоже гемор, для тех кто впервые столкнется. Да и сколько слышал разговор по поводу шустрости работы утф vs win 1251, мол меньше языков, быстрее работает. Тут ничего не утверждаю, может и бред. Да и както надобность в утф как знаю, для js (ajax) нужна, ибо там никак. В остальном - можно не париться.
    Ладно, утф руль, пошел все менять.. ))))
     
  10. А вот кстати "шустрость" строковых функций у УТФ-8 очень ущербна в их текущей реализации, изза неоднозначного количества байт на символ, теоретически, УТФ-16 должен быть гораздо быстрее.
    Хотя слехка поковыряв исходники ПХП6, видел там вроде как решили проблему нативного утф за счет доп. хеш.таблиц для строк, в которых хранятся размеры.
     
  11. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    я при переходе на ютф много думал и не сразу согласился ... последней каплей стал аякс ... первой домхмль ... незнаю как сейчас а два года назад было очень тяжело работать с деревом при том что весь проект на цп1251 ... естественно пока сам пхп полностью не перейдет на ютф будут возникать люди которым ничего не мешает танцевать ... но необходимость отказа от ансишных кодировок назрела очень давно .... и ниразу не в вебе .... веб тормознуто среагировал ...