2016-10-20 4 views
0

Я использую unaccent в Postgres, но он не может преобразовать особый характер как: ù : ù
, но это хорошо для ù: ù
2 символа такое же значение, но разный код, то первый из них является характер и + & # x0300;
Как я могу решить эту проблему? Большое вам спасибо.Postgres unaccent функция для символа

ответ

1

Ваша проблема unicode normalization, что PostgreSQL does not do, к сожалению. И это не так просто реализовать самостоятельно.

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

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

должен сделать трюк.