Джумла и IPB вывод тем с форума - проблема

Тема в разделе "Кодировки, ошибки отображения (крякозябры)", создана пользователем magistr_yoda, 28.12.2009.

  1. Offline

    magistr_yoda Недавно здесь

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    Недавно на сервере хостинга был сбой, после этого появилась проблема - до сбоя, как я понял таблицы форума и джумлы были в разных кодировках, на сайте стоял модуль вывода тем с форума - вот часть его кода

    $db = new db_driver_mysql;
    $db->obj['sql_database'] = $INFO['sql_database'];
    $db->obj['sql_user'] = $INFO['sql_user'];
    $db->obj['sql_pass'] = $INFO['sql_pass'];
    $db->obj['sql_host'] = $INFO['sql_host'];
    $db->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix'];
    //Если у вас возникают проблемы с кодировкой:
    $INFO['mysql_codepage'] = 'cp1251';
    $db->obj['mysql_codepage'] = $INFO['mysql_codepage'];


    $db->connect();

    Всё выводилось нормально, но сейчас похоже какие- то настройки в бд изменились и после отработки этого скрипта, модули джумлы, которые выполняются после него, выводят кириллицу вопросиками, те модули которые выполняются до этого скрипта - выводят кирилицу нормально

    Пробовал закомментировать сточки
    $INFO['mysql_codepage'] = 'cp1251';
    $db->obj['mysql_codepage'] = $INFO['mysql_codepage'];

    Но всё равно то-же самое.

    Как можно исправить ?
     
  2.  
  3. Offline

    ---_SkippeR_--- Недавно здесь

    Регистрация:
    13.11.2009
    Сообщения:
    181
    Симпатии:
    8
    Пол:
    Мужской
    $db = new db_driver_mysql;
    $db->obj['sql_database'] = $INFO['sql_database'];
    $db->obj['sql_user'] = $INFO['sql_user'];
    $db->obj['sql_pass'] = $INFO['sql_pass'];
    $db->obj['sql_host'] = $INFO['sql_host'];
    $db->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix'];
    //Если у вас возникают проблемы с кодировкой:
    $INFO['mysql_codepage'] = 'UTF-8';
    $db->obj['mysql_codepage'] = $INFO['mysql_codepage'];


    $db->connect();

    Пробовал закомментировать сточки
    $INFO['mysql_codepage'] = 'UTF-8';
    $db->obj['mysql_codepage'] = $INFO['mysql_codepage'];
     
  4. Offline

    magistr_yoda Недавно здесь

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    С UTF-8 тоже не работает.

    Я вот подумал, а что если перед строкой
    $db->obj['mysql_codepage'] = $INFO['mysql_codepage'];

    Сохранить во временную переменную, текущее значение кодировки соединения, а после отработки кода выбора данных из таблицы ipb, восстановить значение соединения из этой переменной.
    Правда я не знаю как получить кодировку текущего соединения ??
    Те. джумла работает нормально, до этого модуля, этот модуль тоже нормально, но вот после того, как он отработает, слетает кодировка в модулях джумлы, которые выполняются после него.
    пример сейчас можете посмотреть на моём сайте, который у меня в подписи.

    Вообще желательно чтобы команда joom.ru написали модуль для джумлы + IPB - так как оба движка распространённые, использующий соединение самой джумлы и возможность корректной задачи кодировки, т.к. таблицы IPB по умолчанию ставятся не в кодировке джумлы.

    Файл вывода тем из ipb прикрепляю во вложении, в помощь - кто напишет модуль, выкладывайте пожалуйста.
     

    Вложения:

  5. Offline

    magistr_yoda Недавно здесь

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    Возможно можно использовать библиотеку iconv ?
     
  6. Offline

    ---_SkippeR_--- Недавно здесь

    Регистрация:
    13.11.2009
    Сообщения:
    181
    Симпатии:
    8
    Пол:
    Мужской
    Хм... припомнил путь решения вопроса, возможно поможет а может и нет, помню мне помогло:

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

    Такого рода проблем как у вас не видел никогда...странная проблема..(
     
  7. Offline

    magistr_yoda Недавно здесь

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    А как положено... Это как ?

    Да, в базе однозначно что то перекодировалось - на хостинге был сбой и после восстановления эта проблема появилась.
     
  8. Offline

    magistr_yoda Недавно здесь

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    ENGINE=MyISAM DEFAULT CHARSET=utf8 ; - таблицы джумлы до аварии
    ENGINE=MyISAM DEFAULT CHARSET=cp1251; - таблицы ipb до аварии

    Админ хостинга говорил что переконвертировал все таблицы в cp1251, но тоже самое.

    Скажите а в этом случае может помоч функция iconv ?
     
  9. Offline

    magistr_yoda Недавно здесь

    Регистрация:
    20.05.2007
    Сообщения:
    166
    Симпатии:
    0
    Пол:
    Мужской
    О Б... решено.

    в этом файле, перед вызовом функции connect, поставил
    mysql_query("SET NAMES 'cp1251'");
    а в конце файла
    mysql_query("SET NAMES 'latin1'");
     

Поделиться этой страницей

Загрузка...