Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: Efendy от 05 Марта 2021, 22:05:30



Название: ї/і
Отправлено: Efendy от 05 Марта 2021, 22:05:30
Некоторое время назад заметил такую особенность: при поиске в 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. Вот такой командой можно посмотреть параметры таблицы:
Код:
show create table 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;



Название: Re: ї/і
Отправлено: gen PSI от 31 Марта 2021, 12:40:13
Спасибо за решение.


Название: Re: ї/і
Отправлено: Jovani от 01 Апреля 2021, 11:12:43
Точно так с русской и украинской "е" / "є"