За последние 24 часа нас посетили 16637 программистов и 1649 роботов. Сейчас ищут 2014 программистов ...

Трабала с кодировкой

Тема в разделе "PHP и базы данных", создана пользователем Inoi, 27 авг 2008.

  1. Inoi

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

    С нами с:
    4 авг 2008
    Сообщения:
    52
    Симпатии:
    0
    Адрес:
    Волгоград
    Доброе время суток, с данной проблемой не разу не сталкивался, поиском не нашел того что надо...
    Проблема:
    После соединения с базой идет указание кодировки:
    Код (Text):
    1.  
    2. mysql_query("SET NAMES 'utf8';");
    3. mysql_query("SET CHARACTER SET 'utf8';");
    4. mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");
    При добавление данных из формы происходит:
    1) Если текст англ, то всё прекрасно добавляется
    2) Если текст русский, то данных не заносится, даже не создается строчка в базе
    3) Если убрать код кодировки(тот что с верху) данные заносятся, НО всё в крабзиках...

    как быть?
     
  2. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    1. После коннекта к базе хватает всего одной строчки
    mysql_query('SET NAMES utf8');
    2. Убедись, что collation базы, таблицы и колонки utf8_unicode_ci
    3. Убедись, что передаваемые данные в кодировке utf-8
     
  3. Inoi

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

    С нами с:
    4 авг 2008
    Сообщения:
    52
    Симпатии:
    0
    Адрес:
    Волгоград
    1. пробывал тоже самое
    2. всё там верно
    3. все верно
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Inoi
    кавычки не нужны.
     
  5. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    у вас на сайте meta / header, кодировка какая ? utf-8 ? или windows-cp1251
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Вобще нужны, но можно опускать.

    [sql]NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT}[/sql]
     
  7. Inoi

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

    С нами с:
    4 авг 2008
    Сообщения:
    52
    Симпатии:
    0
    Адрес:
    Волгоград
    Е***ь...точно...стояла 1251...как я это не заметил...

    Всем спасибо
     
  8. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Аналогичная беда, может кто подскажет здесь.

    Вообщем БД с кодировкой utf8_unicode_ci. Сначало долго мудился, чтобы у меня закидывались в базу данные в нормальной кодировке, но как-то добился. Смотрю, в phpmyAdmin показывается всё нормально, порадовался. А тут бац, при считывании из таблицы часть буков становится вопросиками (точно маленькая ш и большая И, может какие еще). Пробовал CHARSET NAME выставлять, неа :(
     
  9. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    SET NAMES utf8, и больше ничего не надо.
     
  10. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    пробовал. Не помогает,
     
  11. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Сайт meta / header на какой кодировке?
     
  12. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    Не. Там вообще не сайт, а серверный скрипт, который по крону запускается, так что не в этом проблема. Проблема в получении данных из БД 100%, причём phpMyAdmin получает корректно, значит я что-то неправильно делаю, но что?

    Код (Text):
    1. mysql_query('SET NAMES `UTF-8`');
    2. $r = mysql_query("SELECT `title`, `text`, `n`, `keys` FROM `parser` WHERE `id`={$l[0]} LIMIT 1");
    3. $r2 = mysql_query("SELECT `url`, `password`, `sbot_n`, `sbot_r` FROM `sites` LIMIT {$l[1]}, 1");
    4. if ($r = mysql_fetch_assoc($r)){
    5.  if ($r2 = mysql_fetch_assoc($r2)) {
    6.   if ($r2['sbot_r']!=100){
    7.    $s=fsockopen($r2['url'], 80, $errno, $errstr, 30);
    8.    echo $r['text'];
    Кстати mysql_client_encoding(); грит latin1 o_0
     
  13. neverlose

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

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    ты парень невнимателен, utf8 вместо utf-8
     
  14. Anonymous

    Anonymous Guest

    UTF8 - слитно
     
  15. Ximik

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

    С нами с:
    22 фев 2007
    Сообщения:
    108
    Симпатии:
    0
    ай, блин, протупил :(

    Спасибо, всё ок теперь :)
     
  16. -Lesnik-

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

    С нами с:
    15 сен 2008
    Сообщения:
    3
    Симпатии:
    0
    Добрый день.
    Некоторое время мастерил дома таблицу для чемпионата. Потом подзабил, сейчас решил снова помастерить.
    Сегодня установил апач, пхп, мускл с этого сайта.
    Восстановил бд, открыл index.php - вместо русских букв вопросы.
    До этого ставил денвер - и с кодировками все было нормально.

    Весь день бьюсь - не получается(
    Что у меня на данный момент есть:
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    PHP:
    1. <?php
    2. mysql_query('SET NAMES `CP1251`');
    3. echo mysql_client_encoding($this->db_connect_id);
    4. $this->query_result = mysql_query($query, $this->db_connect_id);
    5. ?>
    Результат: latin1
    Вот что в базе:
    [​IMG]

    Помогите вернуть русские буквы :)
    Спасибо за помощь :)
     
  17. Anonymous

    Anonymous Guest

    -Lesnik-, а в дампе — нет вопросов?
     
  18. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Обратные кавычки убери.
     
  19. -Lesnik-

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

    С нами с:
    15 сен 2008
    Сообщения:
    3
    Симпатии:
    0
    Что за вопросы?
    Первоначально - кодировки были сp1251 и utf8. Перебил. Базу удалил, с новыми кодировками залил. Ничего не изменилось.

    Убрал, эфекта нету.
     
  20. Anonymous

    Anonymous Guest

    Дамп открываешь - какая кодировка файла?
     
  21. -Lesnik-

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

    С нами с:
    15 сен 2008
    Сообщения:
    3
    Симпатии:
    0
    Шеф, я идиот (с)

    Спасибо за помощь =)

    З.Ы.
    А почему результатом этой функции все равно остается "latin1"?
    PHP:
    1. <?php
    2. echo mysql_client_encoding($this->db_connect_id);
    3. ?>
     
  22. diktator

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

    С нами с:
    19 авг 2006
    Сообщения:
    17
    Симпатии:
    0
    При длбавлении через скрипт русских символов в бд заносится в виде
    HTML:
    1. А
    Как это исправить :?: