Unicode normalization

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Unicode normalization

Сообщение alek111 » 09.11.2021 20:34:04

Давненько я не пользовался паскалем. Последний раз, лет десять назад, здесь был полный бардак со строками, а поддержка юникода была очень фрагментарной и спорной.

Недавно решил тряхнуть стариной и посмотреть что новенького. Общее впечатление очень положительное. Строки, в большинстве своем, приведены к общему знаменателю. С юникодом тоже все стало сильно лучше, хотя некоторый разброд все еще наблюдается. Есть функции для изменения регистра, поиска, замены, сравнения (реализации местами спорные, но в первом приближении работают). Единственное, чего реально не хватает для нормальной работы - нормализация.

В unicodedata есть функция NormalizeNFD, но этого явно недостаточно. Три другие формы нормализации тоже нужны.

Из внешних вроде есть биндинги icu4pas неизвестной свежести и очень несвежий UTF8_Tools (переписанный на паскале с рядом дополнений utf8proc). Судя по тому, что даже относительно свежие примеры из вики (из другой области) потребовали некоторой доработки, напильник для этих библиотек однозначно понадобится.

В общем, чем посоветуете пользоваться для нормализации и не пропустил ли я чего?
Аватара пользователя
alek111
новенький
 
Сообщения: 20
Зарегистрирован: 20.06.2006 16:17:50

Re: Unicode normalization

Сообщение zub » 09.11.2021 21:42:57

Тоже непротив если кто разьяснит эту тему))
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Unicode normalization

Сообщение Vadim » 10.11.2021 16:01:59

Кто бы ещё разъяснил доступным языком, что такое нормализация... :D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Unicode normalization

Сообщение alek111 » 12.11.2021 01:24:35

Vadim писал(а):Кто бы ещё разъяснил доступным языком, что такое нормализация... :D

Буквы с разными добавочными закорючками, типа "ё" или "й" в юникоде могут быть представлены несколькими способами: одним "числом" или несколькими "числами" (одно на базовую букву "е", "и", и закорючки отдельными "числами"). Внимание вопрос, а как сравнить две строки, в которых эти буквы представлены по разному? Вот чтобы привести все строки к одному виду и существует нормализация. Все такие буквы заменяются либо "склеенными", либо "разделенными" представлениями. См. примеры в википедии. https://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8
Аватара пользователя
alek111
новенький
 
Сообщения: 20
Зарегистрирован: 20.06.2006 16:17:50

Re: Unicode normalization

Сообщение Сквозняк » 12.11.2021 04:21:13

Если буквы не из IBM866 не использовать, то и никакая нормализация не нужна :mrgreen: Тем более, что их и на клавиатуре нету.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru