我在寫一個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