[英]Removing diacritic symbols from UTF8 string in C
我正在編寫一個C程序來搜索數據庫中的大量UTF-8字符串。 這些字符串中的某些包含帶有教義的英語字符,例如重音符號等。搜索字符串是由用戶輸入的,因此很可能不包含此類字符。 有沒有一種方法(函數,庫等)可以從字符串中刪除這些字符,或者僅執行不區分教義的搜索? 例如,如果用戶輸入搜索字符串“ motor”,則它應與字符串“motörhead”匹配。
我的第一個嘗試是手動剝離此處描述的組合教學修飾符:
http://en.wikipedia.org/wiki/Combining_character
在某些情況下,這種方法有效,但事實證明,其中許多字符也具有特定的unicode值。 例如,上面的字符“ö”可以由“ o”表示,后跟組合教學法U + 0308,但也可以由單個Unicode字符U + 00F6表示,而我的方法僅過濾前者。
我還研究了iconv,它可以從UTF8轉換為ASCII。 但是,我可能希望將來將程序本地化,這無疑會導致非英語字符的語言出現問題。 有沒有辦法我可以簡單地剝離/轉換這些重音符號?
編輯:刪除問題標題中的錯字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.