J'écris un programme C pour rechercher un grand nombre de chaînes UTF-8 dans une base de données. Certaines de ces chaînes contiennent des caractères anglais avec des didactiques, tels que des accents, etc. La chaîne de recherche est entrée par l'utilisateur, donc il ne contiendra probablement pas de tels caractères. Existe-t-il un moyen (fonction, bibliothèque, etc.) de supprimer ces caractères d'une chaîne, ou simplement d'effectuer une recherche didactique-insensible? Par exemple, si l'utilisateur entre la chaîne de recherche "moteur", elle doit correspondre à la chaîne "moto ̈ rhead".Suppression des symboles diacritiques de la chaîne UTF8 dans C
Ma première tentative a été de dépouiller manuellement les modificateurs combinés didactiques décrits ici:
http://en.wikipedia.org/wiki/Combining_character
Cela a fonctionné dans certains cas, mais il se révèle beaucoup de ces personnages ont aussi des valeurs unicode spécifiques. Par exemple, le caractère "o ̈" ci-dessus peut être représenté par un "o" suivi de la combinaison didactique U + 0308, mais il peut aussi être représenté par le seul caractère unicode U + 00F6, et ma méthode ne filtre que la première.
J'ai également examiné iconv, qui peut convertir de UTF8 en ASCII. Cependant, je pourrais vouloir localiser mon programme à une date ultérieure, ce qui causerait sans doute des problèmes pour les langues avec des caractères non anglais. Y a-t-il une manière que je peux simplement dépouiller/convertir ces caractères accentués?
Édition: erreur supprimée dans le titre de la question.
Vous voulez probablement dire * diacritiques * http://en.wikipedia.org/wiki/Diacritic pas * didactique *? – kriss
C'était un commentaire didactique. –
Tout le monde apprend parfois ... – kriss