java 拉丁文 unicode_java – 将存储在数据库中的拉丁文unicode字符转换为相当于英文字母的字母...

我正在创建一个搜索实用程序,它将搜索SQLITE数据库中的元素.唯一的问题是,数据库包含一些字符,如Åèô,它们在拉丁语中…

是否有一种简单的方法可以忽略这些字母并将它们视为英文字母对应物(Å= A,è= e …)?

我想过设计所有这些字符的1对1映射,比如

HashMap lstOfChar = new HashMap();

lstOfChar.put('Å', 'A');

lstOfChar.put('è', 'e');

并且当从数据库检索数据时,每个这样的字符将被替换为等效的英语字母并且将显示搜索结果.

If I am searching Deepak then the rows containing DeepÅk or DÈepak or deepÃk should be searched

但这将是漫长的过程和维护也将是艰难的.

是否有一些优雅的方式,可能是SQLITE提供了一些功能,还是可以通过SQL实现.

我正在使用Java平台.

编辑我发现Normalizer in posted answer确实有助于在获取结果后执行程序化操作,但这可以通过数据库或通过以某种特殊方式触发SQL来完成,因为它需要大量时间来获取结果并应用此函数并返回结果.

解决方法:

您正在寻找Normalizer.它允许您在重音的Unicode字符及其分解之间进行映射:

Normalizer.normalize(text, Normalizer.Form.NFD).replaceAll(

"\\p{InCombiningDiacriticalMarks}+", "");

我建议你事先这样做,因为它很贵,并把它放在“name_search”专栏或类似的东西中.值得注意的是,这不会捕获所有非“英文”字母,因为它们并不总是有分解,但是é和Â等基础知识将会匹配.

关于你的编辑:正如我所说,最好的方法是将转换应用到所有行,并将结果放在一个名为“name_search”的附加数据库列中.它类似于在表上创建索引.在SQL中没有与Normalizer的功能相同的功能,虽然有些RDBMS系统可能提供一个,但SQLite肯定不会.

标签:java,sqlite,unicode

来源: https://codeday.me/bug/20190831/1774928.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值