Страница 1 из 1

Unicode normalization

СообщениеДобавлено: 09.11.2021 20:34:04
alek111
Давненько я не пользовался паскалем. Последний раз, лет десять назад, здесь был полный бардак со строками, а поддержка юникода была очень фрагментарной и спорной.

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

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

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

В общем, чем посоветуете пользоваться для нормализации и не пропустил ли я чего?

Re: Unicode normalization

СообщениеДобавлено: 09.11.2021 21:42:57
zub
Тоже непротив если кто разьяснит эту тему))

Re: Unicode normalization

СообщениеДобавлено: 10.11.2021 16:01:59
Vadim
Кто бы ещё разъяснил доступным языком, что такое нормализация... :D

Re: Unicode normalization

СообщениеДобавлено: 12.11.2021 01:24:35
alek111
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

Re: Unicode normalization

СообщениеДобавлено: 12.11.2021 04:21:13
Сквозняк
Если буквы не из IBM866 не использовать, то и никакая нормализация не нужна :mrgreen: Тем более, что их и на клавиатуре нету.