Ищу скрипт RiSearch PHP работающий с русским текстом в кодировке UTF-8

igrok54

Ищущий
Второй день с RiSearch PHP сижу, никак не поддается, пробовал менять в скрипте функции strlen, substr на аналоги с приставкой mb_ - ничего путнего не получилось.

Может есть у кого-нибудь работающий вариант - буду крайне благодарен. Или кто-нибудь адаптировал его под UTF-8 и помнит особенности адаптации - замененные функции и т.п...
 

AmdY

Пью пиво
Команда форума
Мне стыдно за свой народ" (с) АГЛ
вы искать то пробовали, минута, считаю смену кодировки страницы
Если скрипт не работает с русским языком, попробуйте добавить следующую строку в начало каждого скрипта:
setlocale(LC_ALL, "ru_RU.CP1251");
http://risearch.org/rus/risearch_php/index.html
 

shelestov

я тут часто
Можно по аналогии попробывать:
PHP:
<?php setlocale(LC_ALL, 'ru_RU.UTF-8'); ?>
 

AmdY

Пью пиво
Команда форума
Вурдалак
спасибо, я упустил про юникод, но сути это не меняет
пускай движок и работает на cp1251 и индексируемые файлы прогонять через iconv в эту кодировку. при поиске поисковую фразу тоже приводить в cp1251, а результат наоборот из cp1251 в utf-8
 

igrok54

Ищущий
Попробовать можно. Но работать не будет.
Это точно. Варианты, которые прописаны в факе по установке я использовал. Строку:
PHP:
setlocale(LC_ALL, 'ru_RU.UTF-8');
в скриптах прописал. В результате база пишется в кодировке UTF-8, но русский текст не ищется, и в результатах поиска (англ. строка или цифры ищутся) встречаются черные ромбики со знаком вопроса вместо некоторых русских символов - это признак, что рвется многобитная кодировка символа.

пускай движок и работает на cp1251 и индексируемые файлы прогонять через iconv в эту кодировку. при поиске поисковую фразу тоже приводить в cp1251, а результат наоборот из cp1251 в utf-8
Такое решение рассматриваю как крайнее возможное. Но было бы лучше заставить работать без многоразовых перекодировок текстов. Ключ к решению должен быть в замене используемых функций на аналоги с приставкой mb_...

ЗЫ: ФАК на оффсайте и Гугл юзался по полной программе, Только после этого решил написать здесь.
 

tz-lom

Продвинутый новичок
PHP:
mb_internal_encoding('UTF-8');
а локаль ему не важна
 

AmdY

Пью пиво
Команда форума
igrok54
не пробуй, там скрипты сильно завязаны на однобайтовость. делайте cp1251 и iconv, или используйте другую библиотеку это сэкономит вам ОЧЕНЬ много времени.
 

igrok54

Ищущий
Всем спасибо! Победил с вашей помощью :)
Сделал так: при индексации страницы пауком полученный текст страницы и при передаче запроса на поиск - конвертируются через iconv из UTF-8 в windows-1251;
База пишется в windows-1251;
Страница же результатов поиска отдается в UTF-8 через
PHP:
mb_internal_encoding("windows-1251");
    mb_http_output( "UTF-8" );
    ob_start("mb_output_handler");
 
Сверху