Delphi 2009:在unicode utf-8中搜索跳过变音符号

Irf*_*lic 4 delphi unicode search utf-8 arabic

我有包含阿拉伯语文本的utf-8编码文件,我必须搜索它.

我的问题是变音符号,如何搜索跳过它们?

就像你在Internet Explorer中加载该文本(在HTML ofcourse中转换文本)一样,IE正在跳过那些变音符号?

有帮助吗?

Edit1:只需按以下代码执行搜索:

 var m1 : TMemo; //contains utf-8 data)
     m2 : TMemo; // contains results

 ...

      m2.lines.BeginUpdate;
      for s in m1.Lines do
      begin
        if pos(eSearch.Text,s)>0 then
           begin
           m2.Lines.Add(s);
           end;
      end;
      m2.Lines.EndUpdate;
Run Code Online (Sandbox Code Playgroud)

Edit2:unicode数据示例:

قلهواللهأحد如果你只搜索没有变音符号的字母,那么就找不到单词قل.

gab*_*abr 5

在Vista +上你可能(我没有阿拉伯语经验)使用CompareString和选项LINGUISTIC_IGNOREDIACRITIC.

NORM_IGNORENONSPACE也可以提供帮助.然后,它可能不会.

或者(但我只是猜测)你可以用GetStringTypeEx解析你的字符串并手动删除变音符号.可能你必须先用标志MAP_COMPOSITE 调用FoldStringMultiByteToWideChar.