我在写一个C程序来搜索数据库中的大量UTF-8字符串。其中一些字符串包含教学法的英文字符,如重音符号等。搜索字符串由用户输入,因此它很可能不包含这些字符。有没有一种方法(函数,库等)可以从字符串中删除这些字符,或者只是执行一个教学不敏感的搜索?例如,如果用户输入搜索字符串“motor”,它应该匹配字符串“moto ̈ rhead”。从C中的UTF8字符串中删除变音符号
我第一次尝试是手工剥离出这里所描述的结合教学修饰符:
http://en.wikipedia.org/wiki/Combining_character
这个工作在某些情况下,但事实证明,许多这些字符也有特定的Unicode值。例如,上面的字符“o ̈”可以用一个“o”表示,然后是组合教学U + 0308,但它也可以用单个Unicode字符U + 00F6表示,而我的方法只能过滤前者。
我也看过iconv,它可以从UTF8转换为ASCII。但是,我可能希望将来的日期本地化我的程序,这无疑会导致非英文字符的语言出现问题。有没有一种方法可以简单地去掉/转换这些重音字符?
编辑:删除问题标题中的错字。
你可能是指* diacritics * http://en.wikipedia.org/wiki/Diacritic不*教学法*? – kriss 2010-10-25 15:04:51
这是一个教学评论。 – 2010-10-25 15:07:37
每个人都需要学习有时... – kriss 2010-10-25 15:09:36