Функция Postgres Unaccent для персонажа

Я использую unaccent в Postgres, но он не может конвертировать специальные символы, такие как:ù : ù
но это нормально для ù: ù
2 символа имеют одинаковое значение, но другой код, первый символ u + ̀
Как я могу решить эту проблему? Огромное спасибо.

1 ответ

Решение

Ваша проблема - нормализация юникода, чего, к сожалению, не делает PostgreSQL. И это не так просто реализовать самостоятельно.

Но, поскольку вы хотите удалить только диакритические знаки, вам нужно только удалить кодовые точки (до или после вызова unaccent() функция), которые являются символами объединения юникода:

select regexp_replace(
  'ùù',
  '[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]',
  '',
  'g'
)

должен сделать свое дело.

Другие вопросы по тегам