Некоторое время назад заметил такую особенность: при поиске в NoDeny считает украинские буквы "ї" и "і" одинаковыми. Для примера, сделайте поиск по фрагменту "ї" и в результате будет искать и те поля, в которых "ї"может и не быть, но будет "і".
В инете есть решения на эту тему. В частности там предлагают заменить COLLATE на utf8_unicode_ci. Это, грубо говоря, правила, по которым происходят сравнения. По дефолту (в доках и кажется в коде) указано utf8_general_ci, что и есть проблемой. Я попытался изменить utf8_general_ci на utf8_unicode_ci в
1) конфиге mysql сервера
2) в файле Db.pm
3) конкретно у базы данных NoDeny
4) конкретно у таблицы data0 (в ней хранятся допполя)
Не помогло. Кстати, может вам поможет, может это от версии mysql зависит. Лично мне помогло изменение COLLATE у конкретного поля data0. Вот такой командой можно посмотреть параметры таблицы:
покажет типа такого:
CREATE TABLE `data0` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL,
`_adr_telefon` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
`_adr_street` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
...
Вот для каждого поля, где вы хотите чтоб "ї" не было равно "і", делаем такое:
alter table data0 change `_adr_city` `_adr_city` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '';
здесь я изменил COLLATE у поля город (_adr_city). Обратите внимание, что _adr_city дважды указывается. Такой синтаксис.
Конечно предварительно нужно сделать бекап базы данных. Его нужно делать при любых изменениях. Я, кстати, не делал)
Возможно вам помогут и более простые действия:
ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE data0 CHARACTER SET utf8 COLLATE utf8_unicode_ci;