Unicode normalization

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

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

Ответить
Аватара пользователя
alek111
новенький
Сообщения: 20
Зарегистрирован: 20.06.2006 16:17:50

Unicode normalization

Сообщение alek111 »

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

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

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

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

В общем, чем посоветуете пользоваться для нормализации и не пропустил ли я чего?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Тоже непротив если кто разьяснит эту тему))
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

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

Сообщение 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
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Если буквы не из IBM866 не использовать, то и никакая нормализация не нужна :mrgreen: Тем более, что их и на клавиатуре нету.
Ответить