[РЕШЕНО] Проблема с русским языком при отображении категорий и в поиске

Тема в разделе "SOBI", создана пользователем luba_s, 28.08.2007.

  1. luba_s
    Offline

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

    Регистрация:
    17.08.2007
    Сообщения:
    24
    Симпатии:
    0
    Пол:
    Женский
    Добрый день.

    При создании категорий в каталоге, их названия отображаются неверно. Второе и последующие слова обрезаются и перекодируются :(.
    Как это выглядит, можно увидеть во вложении.
    Используются:
    Joomla RE 1.0.13
    Sobi2-RC2.7.4b
    Кодировка joomla: 1251
    Пожалуйста, подскажите, как это исправить.

    Заранее благодарна.
     

    Вложения:

    • Problem.JPG
      Problem.JPG
      Размер файла:
      41.2 КБ
      Просмотров:
      207
  2.  
  3. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    на твоей странице серьёзные проблемы с кодировками. кодировки должны быть прописаны везде: в шаблоне и htaccess. кроме того, база данных должна быть создана в правильной кодировке и таблицы должны создаваться в правильной кодировке. перед инсталляцией любых компонентов/модулей языковые файлы должны быть открыты и пересохранены в необходимой кодировке. иначе - проблемы, происхождение которых трудно локализовать/лечить. судя по твоей предыдущей проблеме с соби в уникоде - у тебя таки серьёзный салат с кодировками.

    кроме всего прочего я вижу в твоём битом менюмодуле соби кроме русских букв ещё и немецкие умлауты - это мне дополнительно указывает на языковой/кодировочный салат.
     
  4. luba_s
    Offline

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

    Регистрация:
    17.08.2007
    Сообщения:
    24
    Симпатии:
    0
    Пол:
    Женский
    Ответ: Проблема с русским языком при отображении категорий

    а какую же кодировку лучше всего использовать? Чувствую, что мне пристоит большой кусок работы. Не хочется снова наделать ошибок
     
  5. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    в какой хочешь/в какой заказано.

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

    например: если ставишь соби+модули к ней: перед установкой распакуй языковой файл соби+ файлы модулей и сохрани в кодировке страницы. после этого архивируй и ставь.
     
  6. luba_s
    Offline

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

    Регистрация:
    17.08.2007
    Сообщения:
    24
    Симпатии:
    0
    Пол:
    Женский
    Ответ: Проблема с русским языком при отображении категорий

    Спасибо большое, буду пробовать :)
    Если не сложно, подскажи еще, пожалуйста, как решить проблему с картинками в соби.
    При просмотре в IE7 не отображаются иконки возле категорий - вместо них белые квадратики с красными крестиками (также достали изображения желтых папочек). На мозиле и firefox.com они правильно отображаются.
     
  7. chilly_bang
    Offline

    chilly_bang специалист

    Регистрация:
    30.04.2006
    Сообщения:
    1 545
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    у меня была такая проблема, когда инсталляция стояла в субдиректории - у тебя так?

    порпобуй смени вид dtree - там есть в настройках где-то... а если в субдиректории - на офсайте соби был где-то патч (на их форуме наверняка лежит)
     
  8. luba_s
    Offline

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

    Регистрация:
    17.08.2007
    Сообщения:
    24
    Симпатии:
    0
    Пол:
    Женский
    Ответ: Проблема с русским языком при отображении категорий

    Вид dtree поменяла и даже нашла как заменить папочки на картики, :) (но полностью они к сожалению не убираются и картинка будет для всех категорий одинковая....а мне так хотелось чтоб для каждой своя была...)
    А вот вопрос про субдериктории оказался через чур сложным :) Не могу на него ответить, так как сама не знаю как у меня инсталяция стоит...Стыдно....:)

    chilly_bang,
     
  9. infoman
    Offline

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

    Регистрация:
    28.08.2007
    Сообщения:
    575
    Симпатии:
    12
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    а я от них атказался
    вы хоть видели модуль dtee там такой агромадный код js просто ужос=O
     
  10. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Решение: Проблема с русским языком при отображении категорий SOBI (Sigsiu Online Business Index)

    luba_s, SOBI сам криво пишет базу - вместо русского в базу пишутся htmlentities.

    Какое-то решение проблемы:
    Открываем components/com_sobi/config.class.php и в функции clearSQLinjection, ~1181 строке меняем
    Код (PHP):
    1. $string = htmlentities($string);

    на
    Код (PHP):
    1. $string = htmlspecialchars($string, ENT_QUOTES, 'cp1251');


    Т.к. это функция clearSQLinjection, то если что, я не виноват :)
    Будет лучше, если программеры подтвердят.
     
  11. Brun
    Offline

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

    Регистрация:
    19.11.2006
    Сообщения:
    48
    Симпатии:
    1
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    sourpuss, спасибо, это реально помогло, но расширенный поиск не работает, да и простой тоже :(
    Кто знает что там нужно менять?
     
  12. Offline

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

    Регистрация:
    25.10.2007
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    Какое-то решение проблемы:
    Открываем components/com_sobi/config.class.php и в функции clearSQLinjection, ~1181 строке меняем PHP код:
    $string = htmlentities($string);
    на код:
    $string = htmlspecialchars($string, ENT_QUOTES, 'cp1251');


    У меня СОБИ 2-8-2
    сточка 1962 components/com_sobi/config.class.php и в функции clearSQLinjection
    НЕ ПОМОГЛО(((

    пишет на страничке вместо названия каталога
    & # 1040; & # 1088;& # 1093 ; & # 1080........
    не совпадают кодировки, изменить кодировку в шаблоне???

    и не отображает более 16 символов в категории
     
    Последнее редактирование: 25.10.2007
  13. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    Peterm, категории пересохранял?
     
  14. Offline

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

    Регистрация:
    25.10.2007
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    Да сохранил, внутри админки соби показывает по-русски, а на странице
    & # 1040; & # 1088;& # 1093 ; & # 1080........
    кодировки что-ли...
    и в админке не дает писать более 16 символов, а мне надо, например, Архитектура и дизайн, уже не влезает(((
     
  15. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 108
    Симпатии:
    159
    Пол:
    Мужской
    Ответ: Проблема с русским языком при отображении категорий

    Peterm, в шаблоне верно кодировка прописана? win-1251 в index.php ?
     
  16. c80609a
    Offline

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

    Регистрация:
    13.11.2007
    Сообщения:
    3
    Симпатии:
    0
    Ответ: Проблема с русским языком при отображении категорий

    Здесь я опишу шаги, которые необходимо предпринять для русификации связки "Joomla - Sobi2 - Search".

    Комплект:
    1. Joomla 1.0.13_Stable
    2. Joomla 1.0.13 russian frontend
    3. SOBI2 RC2.8.1b
    Всё взято гдето на этом портале.




    1. Ставим Joomla.

    2. Прикручиваем русификацию, переключаемся на неё.

    3. Устанавливаем SOBI2. Идем в components\com_sobi2\, ищем config.class.php, открываем, внутри функции clearSQLinjection вставляем $string = htmlspecialchars($string, ENT_QUOTES, 'cp1251');, фрагмент кода:
    Код (PHP):
    1. function clearSQLinjection($string) {
    2.         if(!$string)
    3.             return $string;
    4.         $iso = explode( '=', _ISO );
    5.         if(strtoupper($iso[1]) != "UTF-8")
    6.             //$string = htmlentities($string);
    7.             $string = htmlspecialchars($string, ENT_QUOTES, 'cp1251');
    8.         $string = addslashes($string);
    9.         $string = $this->database->getEscaped($string);
    10.         return $string;
    11.     }


    4. Идем в components\com_sobi2\, ищем файл sobi2.php. Открываем, начинаем модифицировать (предварительно сделайте бэкап, aka sobi2_old.php).

    5. Добавляем в sobi2.php функцию utf8win1251():
    Код (PHP):
    1. function utf8win1251($s){
    2.         $out="";$c1="";$byte2=false;
    3.         for ($c=0;$c<strlen($s);$c++){
    4.             $i=ord($s[$c]);
    5.             if ($i<=127) $out.=$s[$c];
    6.             if ($byte2){
    7.                 $new_c2=($c1&3)*64+($i&63);
    8.                 $new_c1=($c1>>2)&5;
    9.                 $new_i=$new_c1*256+$new_c2;
    10.                 if ($new_i==1025) $out_i=168; else
    11.                 if ($new_i==1105) $out_i=184; else $out_i=$new_i-848;
    12.                 $out.=chr($out_i);
    13.                 $byte2=false;
    14.             }
    15.             if (($i>>5)==6) {$c1=$i;$byte2=true;}
    16.         }
    17.         return $out;
    18.     }


    6. Затем необходимо переопределить хидер внутри функции axSearchSobi2 и сконвертировать строку (фразу) поиска в windows1251, кусок кода такой:
    Код (PHP):
    1. define("_SOBI_AJAX_SEARCH", true);
    2. header("Content-Type: application/x-javascript; charset=windows-1251");
    3. $searchString = sobi2Config::request($_REQUEST, "sobi2Search");
    4. $searchString = utf8win1251($searchString);
    5. $searchString = str_replace("%20", " ", $searchString);
    6. $phrase = sobi2Config::request($_REQUEST, "searchphrase");
    7. $phrase = utf8win1251($phrase);


    7. Теперь, там же, внутри функции axSearchSobi2 при переборе результатов, добавляем $getField = utf8win1251($getField), фрагмент кода:
    Код (PHP):
    1. foreach($fields as $field) {
    2.     $getField = sobi2Config::request($_REQUEST, $field->fieldname, null);
    3.     $getField = $config->clearSQLinjection($getField);
    4.     $getField = utf8win1251($getField);


    8. Внутрь функции searchSobi2 добавляем $searchString = utf8win1251($searchString), фрагмент кода такой:
    Код (PHP):
    1. $searchString = sobi2Config::request($_REQUEST, "sobi2Search", null);
    2. $searchString = utf8win1251($searchString);
    3. $searchString = str_replace("%20", " ", $searchString);


    9. Вот и всё, поиск дружит с русским языком.

    10. Для наглядности креплю файл, где лежат модифицированные функции + метки.

    11. Вопросы по функционалу модификаций задавайте мне, вопросы по теории - google it!
     

    Вложения:

    • sobi2.php.txt
      Размер файла:
      15.8 КБ
      Просмотров:
      95
  17. Offline

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

    Регистрация:
    25.11.2007
    Сообщения:
    1
    Симпатии:
    0
    Ответ: Проблема с русским языком при отображении категорий

    спасибо большое за предложенный способ, сам я новичок в этом деле и хотел бы попросить кого то залить на сайт уже модифицированный sobi2.php! буду очень признателен
     
  18. CityCat
    Offline

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

    Регистрация:
    25.04.2006
    Сообщения:
    16
    Симпатии:
    1
    Пол:
    Мужской
    Ответ: [РЕШЕНО] Проблема с русским языком при отображении категорий и в поиске

    Спасибо! Огромное помогло.

    Но есть одна проблема, в результатх поиска оно всё же пишет искомое слово в другой кодеровке:

    Результаты поиска:
    Найдено 1 результатов при поиске: àëüôà

    Подскажите как этот баг исключить?
     
  19. Offline

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

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: [РЕШЕНО] Проблема с русским языком при отображении категорий и в поиске

    Заметил ещё одну проблему: стандартный модуль поиска sobi2search не понимает русские символы. Чтобы я туда не вводил русскими буквами, он будет искать пустую строку. Хотя с английскими буквами всё нормально.
    Кто-то решил эту проблему?
     
  20. CityCat
    Offline

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

    Регистрация:
    25.04.2006
    Сообщения:
    16
    Симпатии:
    1
    Пол:
    Мужской
    Ответ: [РЕШЕНО] Проблема с русским языком при отображении категорий и в поиске

    Я решил, читай выше.
     
  21. Offline

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

    Регистрация:
    28.11.2007
    Сообщения:
    23
    Симпатии:
    1
    Ответ: [РЕШЕНО] Проблема с русским языком при отображении категорий и в поиске

    Где? Вроде-бы не слепой, но не вижу.
    Выше есть решение по стандартному поиску SOBI, но не по mod_sobi2search.

    Вот например я ищу через этот модуль слово "Автогрейдер", меня перекидывает на site/search-54/ (для каждого поиска через этот модуль JoomSef создает новую страницу :( )
    Реальная ссылка выглядит вот так:
    Код (PHP):
    1. site/index.php?option=com_sobi2&search=Èñêàòü&searchphrase=any&sobi2Search=Àâòîãðåéäåð&sobi2Task=search&Itemid=0


    Но в поле поиска SOBI (не модуля) вместо слова "Автогрейдер" получается "Т".
     

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

Загрузка...