8791 sujets

Développement web côté serveur, CMS

Bonjour.

Je suis confronté à un problème inattendu d'encodage dans un bdd MySQL (v5.5.25) :
J'ai besoin de stocker dans une table des caractères en minuscule ou en majuscule et dont certains contiennent un accent.
J'ai donc choisi l'utf8_bin puisque c'est le seul qui soit sensible à la casse.
Mais lorsque j'insère une lettre accentuée, il me la remplace par un code qui ressemble plus ou moins à de l'hexadécimal...
Exemple : si j'insère "ù", il enregistre "c3b9"

Du coup, dans mes scripts PHP, mes comparaisons échouent sur les lettres accentuées.
Comment résoudre ce problème ?

Merci d'avance

P.S : la plupart des encodages que MySQL me propose ont le suffixe _ci et aucun n'a le suffixe _cs. C'est normal ?
Bonjour,

Mysql ne fait pas de conversion d'encodage. Si ton texte avant insertion dans la bdd n'est pas en utf-8, il ne le sera pas plus une fois inséré.

Il me semble que le champ interclassement sert surtout pour faire les recherches de chaine de caractères.

Si tu as besoin de convertir ta base, le mieux est de faire un export sql et ensuite de le convertir via un logiciel.
Merci benj

Je pense avoir trouvé la solution : je stock mes données en utf8_unicode_ci.
Et dans mes requêtes, j'inclue la clause BINARY, ce qui me permet de bénéficier de la sensibilité à la casse.

Et voià
Modifié par louisss (04 Oct 2013 - 16:12)