Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: Проблемы с кириллицей в поисковике портала WebAPP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Eddy

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Уважаемые гуру, сразу прошу прощения, если этот вопрос уже поднимался на форуме, во всяком случае поиск результата не дал.
 
Итак, есть проблема, или даже несколько.
 
Скачал и поставил на тестовую машину (HARD: Compaq EVO-PIV/2.4/256DDR/64AGP4/20+40GBHDD/... SOFT: WinXP-ProSP1+2/Apache2.0.46/ActivePerl 5.8.0.806/SendMail/PHP4.3.2
/MySQL4.0…)
веб портал WebAPP 0.9.9.  
На базе этого портала строю сайт своей компании. Можно было бы поставить что ни будь на PHP, но тот сервер моего провайдера, где хостится наш сайт, не поддерживает пхп.
Итак, скачал, поставил, настроил, нашел кучу ошибок, почти все заново русифицировал. Сейчас все отлично работает, все прекрасно, но...
Есть две проблемы:
 
1) Не работает русский поиск по сайту. Вернее, поисковой скрипт не понимает кириллицу. На форуме разработчика этот вопрос уже поднимался, но там так и ничего дельного не предложили. Прошу вас, если вам не трудно, посоветуйте, как менять скрипт, чтобы он поддерживал русские кодировки. Если можно, приведите конкретный и как можно более подробный пример, так как я perl знаю очень плохо. Могу немного покопаться в чём то коде, и делать незначительные изменения, на уровне if то-то, elsif то-то, else это-то...  
Если есть какие то моды, плагины и хаки устраняющие этот баг, прошу поделиться ссылками и опытом.
 
2) Не работает система антимат на форуме. Работает в гостевой, в разделе новостей (статьи), ссылок, и вообще во всех разделах, работает даже на заголовках и темах форумов и категорий форумов, но вот внутри самого форума, в самих топиках пиши чё хош! Не режет, и все тут. Какие тут могут быть соображения?
 
Очень прошу, ответьте как можно скорее, сайт должен быть до конца месяца готов.
В принципе у меня все готово, только вот эти 2 проблемы меня уже достали.
 
И еще одна небольшая просьба. Поставил я центральный плагин и хак для того, чтобы пользователи могли внести в свой аккаунт день рождения и годовщину (свадьбы, например). Плагин делает запрос и выводит список тех, у кого сегодня день рождения и юбилей, и поздравляет их.  
Проблема вот в чем, сам sub выводит только текст типа "C днем рождения, Eddy!" не форматируя его. А плагин может это отформатировать используя css, запихнуть в таблицу и выводить не нарушая общий дизайн сайта. Но, когда в какой то день некого поздравлять, хотелось бы, таблица исчезла, а не болталась с пустым содержимым.  
 
Я понимаю, что задал слишком много вопросов, и главное нет никакой конкретики. Если кто-то готов оказать помощь, могу выложить листинг некоторых участков кода портала, чтобы вам легче было разобраться.
 
Заранее выражаю всем свою благодарность.
 
 
Добавлено
Подумал тут, лучше выложу архивированные WinRAR-ом (v'3.0) исходники некоторых файлов на свой сервер.
Привожу ссылки на архивы по первому вопросу, по второму и по третьему.
Заранее всем спасибо!




Вынес ключевые слова в название. — Svarga.

Всего записей: 20 | Зарегистр. 30-03-2003 | Отправлено: 20:35 06-10-2003 | Исправлено: Svarga, 07:16 25-10-2003
WebDi



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А может дело тут в MySQL. А конкретно в кодировке по умолчанию "Latin1".
Когда-то у меня из-за этого поиск по кириллице не работал. Может также всё с кириллицей связанное не работать.
Нужно изменить дефолтную кодировку на "Win1251" или "cp1251", или "Win1251cp" (не помню как там ).
Видимо менять придётся каждый раз при загрузке скрипта, а лучше сменить в настройках MySQL на сервере.

----------
Мой блог о веб-технологиях

Всего записей: 2228 | Зарегистр. 05-04-2002 | Отправлено: 07:24 07-10-2003
Eddy

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо за совет.
Но в том то и вся прелесть WebAPP, что он не использует  ни MySQL, ни какую-нибудь другую базу данных. Данные сохраняются в текстовом формате, на отдельных файлах.  
 
Что касается кодировок, на каком-то форуме уже было предложено в заголовках конкретно указывать кодировки. Но это ничего не дает, так как скрипт поисковика просто не поддерживает 8 битные кодировки. То есть работает с 7-и битной ASCII кодировкой, в то время, как для кириллических кодировок используются 8-и битные ASCII символы ISO (KOI8, CP866,  CP1251 и пр.). Скрипт поисковика введенные для поиска слова проверяет посимвольно на соответствие кодировке 7-и битной ASCII. Как это реализовано, я до конца не понимаю.  
 
Тут должно быть 2 варианта: либо отключить проверку соответствия кодировок 7-ми битной ASCII, что должно быть гораздо проще, либо дополнить его проверкой соответствия ISO кодировкам, что достаточно сложно реализовывается, и лучше всего здесь использовать какие-то дополнительные модули Perl. Как это делать, я не знаю, для этого моих знаний в перловке недостаточно
 
Кстати, поскольку портал мультиязычный, не рекомендуется в метатегах указывать кодировку. Тем более, что на сервере используется русский Apache, который сам выдает документы в нужной кодировке. Многие хостеры, использующие русский Apache, вообще рекомендуют не применять метатеги charset и Content-Language. В результате, если у вас страница на Win1251, и вы указали конкретно кодировку, то те у кого дос, ос2, мак или какой-нибудь клон никсов, просто получат абракадабру. Происходит это потому, что апач его перекодирует в нужную кодировку для клиента, а браузер, читая заголовок, пытается заново перекодировать. Вообще это известная проблема, и о ней уже много говорилось. Тут же проблема иного характера.  
 
Так что ваш совет ничего не даст.  
В любом случае, спасибо вам.
 
Жду других отзывов. Если вам не трудно, скачайте с вышеприведенных ссылок исходники, может это поможет лучше разобраться с сутью проблем.
Спасибо вам и удачи!

Всего записей: 20 | Зарегистр. 30-03-2003 | Отправлено: 23:58 08-10-2003
Eddy

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Хм, думал здесь найду быстрый ответ на вопросы...
 
Ждать было некогда, и самому пришлось изучать основы перл, чтобы разобраться с этим чертовым порталом.
Нашел однако!!!
 
Ларчик открывался просто.
Итак, по первому пункту:
 
в файле /webapp/cgi-bin/cgi-lib/search.pl   в строке 248  
 
$regex .= "(/\\b ";
 
заменить на  
 
$regex .= "(";
 
 
в строке 281  
 
$regex .= "$crit)\\b )";
 
заменить на  
 
$regex .= "$crit))";
 
 
 
По второму вопросу:
 
в файле /webapp/cgi-bin/cgi-lib/subs.pl   в строке 2229
     
$texttocensor =~ s/\b $word\b /$censored/gi;
 
заменить на
 
$texttocensor =~ s/$word/$censored/gi;
 
 
Вот и все.
 
Оказывается, надо было убрать \\b (или \b), после чего русскоязычный поиск и антимат начинают нормально функционировать. Обнаружил это методом научного тыка.  
Для танкистов вроде меня; (\b) - это мнимый метасимвол (мнимая точка), обозначающий границу слова между символами (\w) и (\W). Внутри класса символов (\b) обозначает символ backspace.  
Сам не совсем понимаю, что это значит,   но убрав этот метасимвол, получил то, что хотел. Теперь буду думать, как сделать, чтобы WebApp нормально работал с русскими именами (в кириллической кодировке) и заголовками. IMHO, метасимвол \b здесь тоже играет не последнюю роль.  
Может я не прав, на днях разберусь, а теперь пора спать...
 
PS: У кого подобная проблема, надеюсь, теперь будут так же довольны этим порталом как и я.  
Пользуйтесь на здоровье!
 
Удачи!

Всего записей: 20 | Зарегистр. 30-03-2003 | Отправлено: 04:26 21-10-2003
Antuan



moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eddy

Цитата:
Нашел однако!!!  

Хорошая работа
 

Цитата:
веб портал WebAPP 0.9.9.  

Заходи к нам
- у нас тоже он обсуждается ...


----------
EuRuChess

Всего записей: 10667 | Зарегистр. 10-04-2001 | Отправлено: 11:36 23-10-2003
WebDi



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eddy
Браво!
Надо мне заново Perl изучить.

----------
Мой блог о веб-технологиях

Всего записей: 2228 | Зарегистр. 05-04-2002 | Отправлено: 14:11 24-10-2003
Eddy

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Заходи к нам  
- у нас тоже он обсуждается ...  

Ну, дык, я этот портал через ваши ссылки и нашел.  
Давно хотел пробовать порталы, но раньше они мне казались чем то архисложными. Благодаря вашим постам, начиная с сентября мес. перепробовал на локалке дюжину порталов; от пхп/постньюк до миниропорт.
Но, как уже отметил выше, наш хостер дал нам старый сервер без поддержки пхп и мускулов. Место и трафик можно сказать бесплатные, вернее даются по бартеру, взамен за  рекламу. Ну а даренному коню, в зубки не смотрят...
В любом случае огромное спасибо всем участникам, администраторам и модераторам данного форума за то, что помогли мне сделать выбор.  

Цитата:
Eddy  
Браво!  
 
Спасибо за поддержку.  
Приглашаю вас к нам на портал
Прошу модераторов простить за рекламку.  
IMHO этот трэд можно перенести в одну из тем, посвященных WebAPP.
Жду ваших откликов, замечаний и предложений.

Всего записей: 20 | Зарегистр. 30-03-2003 | Отправлено: 10:40 25-10-2003 | Исправлено: Eddy, 10:45 25-10-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: Проблемы с кириллицей в поисковике портала WebAPP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru