Не работает поиск на русские символы в utf-8

Автор DeNiko, 19 ноября 2006, 18:01:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

DeNiko

День добрый.
Движок версии Powered by SMF 1.1 RC3, пропатченный. Русский язык, UTF-8.
Непонятки с поисковой функцией.
Английские символы и цифры поисковик SMF воспринимает и выдает результаты.
Русские символы напрочь игнорирует и выдает сообщение "Вы не указали строку поиска".
Как действовать в данном случае?
http://forums.uapa.ru

globus_it

Обнаружилась еще и такая головная боль с Поиском; при использовании русского шрифта в поисковой строке выдает следующий месседж

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation 'like'
Файл: /home/globusin/public_html/WebWorksTesting/JoomRUS/smf/Sources/Search.php
Строка: 1095

Используются следующие дефолтовые настройки на сервере

    * Server version: PHP 4.1.21-standard-log phpMyAdmin - 2.9.0.2
    * Protocol version: 10
    * Server: Localhost via UNIX socket
    * User: ????????
    * MySQL charset: UTF-8 Unicode (utf8)
    * MySQL connection collation: cp1251_bin
    * MySQL client version: 4.1.21

Joomla сайт поиск работает прекрасно к нему-же подключен выше упомянутый форум.


Mavn

    * MySQL charset: UTF-8 Unicode (utf8)
    * MySQL connection collation: cp1251_bin
это твоя основная проблема! Если ты используешь UTF8 то у тебя должно быть все в UTF8 все таблицы все соединения и в частности поля в таблицах Когда выполнишь данные условия то и работать у тебя будет все нормально
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

globus_it

#3
В базе данных проглядываются три различных уровня COLLATION.  Первый (думаю, что ето и есть тот которуй нужно менять в phpMyAdmin) на уровне самой базы, второй на уровне таблиц, ну и наконец последний на уровне отдельных атрибов внутри таблиц (типа Name, Text, title_alias, introtext и т.д) 

Вообщем поменял все три во всех таблицах с префиксом "smf_" с 1Latin_Swedish_ci на cp1251_general_ci и с поиском проблем нет.  MySQL charset:  UTF-8 Unicode (utf8) остался без изменений; обыскал все лазейки ну нет доступа кроме как из самого скрипта, используя:

$cfg['DefaultLang'] string
    Defines the default language to use, if not browser-defined or user-defined.
    See the select_lang.lib.php script to know the valid values for this setting.

$cfg['DefaultConnectionCollation'] string
    Defines the default connection collation to use, if not user-defined.
    See the MySQL documentation for list of possible values.

$cfg['Lang'] string
    Force: always use this language (must be defined in the select_lang.lib.php script).

$cfg['DefaultCharset'] string
    Default character set to use for recoding of MySQL queries. This must be enabled and it's described by $cfg['AllowAnywhereRecoding'] option.
    You can give here any character set which is in $cfg['AvailableCharsets'] array and this is just default choice, user can select any of them.

Но это как говорится, уже крайние меры, поэтому в решении не использовалось.  Короче; вывод такой --

как Mavn уже заметил дефолтовый COLLATION форума прописан в index.russian.php вот его то и надо менять в самой базе.

globus_it

Как дополнение к выше-сказанному;

видимо текстовые поля залинкованы на прямую с таблицами базы СМФ и не конвертируются скриптом. 

Добавление двух строчек в index.russian.php разрешает проблему с отображением и переводом 
символов не взирая на "char_set" самой БД.

line 11: $cfg['DefaultConnectionCollation'] = 'cp1251_general_ci';
line 12: $cfg['DefaultCharset'] = 'windows-1251';

теперь никакой горбылятины.