Removendo acentos de um QString [duplicado]

Esta questão já tem uma resposta aqui:

Como remover acentos / sinais diacríticos de uma string no Qt? 4 respostas

Desejo remover os acentos e, mais geralmente, as marcas diacríticas de uma string para iniciar uma pesquisa insensível ao sotaque. Com base em algumas leituras em classes de caracteres Unicode, descobri o seguinte:

 QString unaccent(const QString s)
 {
   QString s2 = s.normalized(QString::NormalizationForm_D);
   QString out;
   for (int i=0,j=s2.length(); i<j; i++)
   {
     // strip diacritic marks
     if (s2.at(i).category()!=QChar::Mark_NonSpacing &&
         s2.at(i).category()!=QChar::Mark_SpacingCombining)
     {
          out.append(s2.at(i));
     }
   }
   return out;
 }

Parece funcionar razoavelmente bem para idiomas baseados no latim, mas eu estou querendo saber sobre sua adequação em outros alfabetos: árabe, cirílico, CJK ... que eu não posso testar devido à falta de compreensão cultural destes.

Especificamente, eu gostaria de saber:

Qual formulário de normalização Unicode é mais adequado para esse problema:NormalizationForm_KD ouNormalizationForm_D?É suficiente remover os caracteres pertencentes aMark_NonSpacing eMark_SpacingCombining categorias ou deve incluir mais categorias?Existem outras melhorias no código acima que o fariam o melhor possível para todos os idiomas?

questionAnswers(1)

yourAnswerToTheQuestion