我在Postgres中使用unaccent但它无法转换特殊字符,如:
ù : ù
但是对ù: ù
来说没问题
2个字符含义相同但代码不同,第一个字符是字符u +
我怎么能解决这个问题?
非常感谢你。
答案 0 :(得分:2)
您的问题是unicode normalization,遗憾的是PostgreSQL does not do。而且你自己实施起来并不那么简单。
但是,因为您只想删除变音符号,所以您只需要实际删除unicode combining characters之前的代码点(在调用unaccent()
函数之前或之后):
select regexp_replace(
'ùù',
'[\u0300-\u036F\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]',
'',
'g'
)
应该这样做。