postgresql搜索

oalqel3c  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(182)

我在postgresql中遇到了一个有趣的字符编码问题。使用ilike运算符和非ascii字符搜索表时会出现问题ä','ö',..) 在搜索词中。似乎搜索结果因搜索项的编码不同而不同(因为您可以用许多不同的方式对这些非ascii字符进行编码)。
我知道一个事实,我在一些表中(在“字符变化”列中)有utf-8编码的非ascii字符,也有一些其他编码(可能是拉丁-1,不确定)。例如'ä' 字符有时作为正确的utf-8表示“c3a4”出现,但有时是这样的:“61cc88”。这可能是因为我将一些遗留数据导入了utf-8中没有的数据库。这在大多数情况下都不是问题,因为它们在web应用程序ui中的显示方式是正确的。只有搜索才是问题所在。i、 e.我无法找到一种方法使搜索找到数据库中的所有相关条目,因为结果因搜索词编码而异(=基本问题是搜索无法正确获取遗留数据,因为它的非ascii字符混淆了)。
以下是有关申请的事实:
postgresql 11.5(通过亚马逊rds)
npgsql 4.1.2版
.net核心3
React前端
数据库编码utf8,排序规则en\u us.utf-8,字符类型en\u us.utf-8
有什么办法吗?
编写一个批处理作业,将所有数据转换为utf-8,并更新数据库并以某种方式保护进一步的数据插入,以便只使用utf-8?
让postgresql ilike忽略字符编码?
编辑:在postgresql中找到有关unicode规范化的好页面:https://www.2ndquadrant.com/en/blog/unicode-normalization-in-postgresql-13/

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题