2009-09-14 7 views
0

J'ai un site web pour lequel je viens d'écrire une fonction de recherche. Je viens de réaliser que j'ai quelques mots dans mon db avec des accents. Donc, quand quelqu'un tape le mot à rechercher, sans l'accent, bien sûr, il ne trouve pas ce qu'il cherche.correspondant à des mots avec des accents, trémas, etc. mysql/php

la plupart des fonctions de recherche ont résolu ce problème maintenant; comment font-ils? Il doit y avoir un truc intelligent. La plupart de mes requêtes utilisent la fonction MATCH de mysql mais l'une d'elles utilise LIKE.

Répondre

1

Vous devez définir un collation particulier sur votre schéma afin que MySQL sache quels caractères sont supposés être équivalents. Si une lettre avec une marque diacritique est considérée comme identique à une autre ou à une autre séquence de caractères dépend de la langue, essayez utf8_general_ci comme point de départ pour ignorer les accents (en supposant que vous utilisez un jeu de caractères UTF-8, devrait être vraiment). Essayez d'utiliser le même classement sur toutes vos chaînes, afin qu'elles puissent être jointes et comparées sans conversions coûteuses.

+0

Ceci est tout à fait correct, bien qu'il m'ait souvent perturbé comment MySQL encapsule les jeux de caractères et les collation dans une boule désordonnée. Les deux sont très différents, et MySQL embrouille l'eau comme un fou avec ça. – Eric

Questions connexes