如何搜索键盘上没有字符的字符串(非英语)?

Posted

技术标签:

【中文标题】如何搜索键盘上没有字符的字符串(非英语)?【英文标题】:How can I search for strings with characters not on the keyboard (non-english)? 【发布时间】:2011-04-26 15:09:12 【问题描述】:

我有一个搜索表单,我希望我的用户能够输入非英文字符的等效英文字符。

例如。 要查找 Ælfred,用户可以搜索“Ælfred”或“AElfred”。 搜索也应该不区分大小写,以便“aelfred”可以工作。 我也让它搜索,默认情况下,它匹配字符串的开头,因此搜索“Æ”或“AE”甚至“A”将在结果中包含Ælfred。

需要考虑其他转换,例如 ê -> e、å -> a。

我正在使用带有 SQL 后端的 ASP.NET。是否有任何标准库可以帮助进行这种搜索?

【问题讨论】:

你真的应该接受更多的答案。 @DMan - 我想人们应该回答我的更多问题。 @cinqoTimo 我正在寻找一个库或 SQL 函数,它将这些字符的 Unicode 转换为可在英文键盘上键入的字符。不知道你的建议对我有什么作用。 SQL Server 的内置全文搜索可以进行不区分重音的搜索,但我不确定这样的双元音。 (我假设您使用的是 MSSQL,因为这是 ASP.NET) @Jeff- 在你的 41 个问题中,只有 3 个没有答案。不是 33%。 【参考方案1】:

并不总是存在与非英文字符等效的英文字符,但可以尝试使用 string.Normalize 将 Normalized 字符串存储在不同的字段中并与之进行比较。

MS SQL 字段和全文搜索目录可以不区分重音和大小写,因此您可以涵盖其他情况。

【讨论】:

感谢您的提示 - 我没有考虑过做第二个字段 - 我可能会添加。

以上是关于如何搜索键盘上没有字符的字符串(非英语)?的主要内容,如果未能解决你的问题,请参考以下文章

从字符串 Typescript 中删除非英语 [重复]

如何使用 nspredicate 对非英语字符串进行排序?

itext5:非英语连字符不起作用

如何在 C++ 中获取、存储和打印非英语字符串

使用Python在Windows上使用非英语字符获取短路径

如何始终从 NSError 获取英文字符串?