utf 8 and co

Eléphant du PHP | 94 Messages

24 août 2010, 15:55

Bonjour,

Bon, je ne sais vraiment pas si je suis dans la bonne section, vu que je n'arrive pas à comprendre à quel niveau ça coince.

J'ai une table dans une base de données avec un nom de profession, genre "comédien" par exemple.

Dans les définitions de la base je vois bien utf8_bin.

Dans mes pages crées avec php, je déclare bien en entête que je suis en utf-8.

Dans un script php, je fais lire toutes les professions présentes dans ma table, puis afficher dans une liste de choix html.

Lorsque l'utilisateur choisit une profession et envoi, je vais traiter en fonction de la profession choisie.

Bien entendu, par sécurité, jje teste d'abord que la profession envoyée par POST est bien présente dans ma table. Puis j'affiche des infos différentes selon cette profession.

Cela fonctionnait très bien !

Je suis sous ubuntu. Juste avant de partir en vacances, j'ai fais une mise à jour ubuntu, pour passer à la dernier version lts.

En revenant de vacances, ce qui fonctionnait ne fonctionne plus.

Je m'explique :

Lorsque je lis donc ma table contenant toutes les professions, et que je les fais afficher dans ma liste de choix de ma page html, "comédien" n'est pas affiché correctement, mais avec le caractère habituel de non_imprimable, c.a.d. grosso-modo "com?dien".

Du coup, si l'utilisateur choisit cette profession dans la liste des professions et envoi, lors du test expliqué plus haut pour voir si la profession envoyé par POST est présente dans ma table mysql, ce n'est plus le cas, il ne la trouve plus.

Bien entendu, s'il est choisit une profession sans caractère accentué, ça fonctionne toujours.


Le plus fort (je trouve), c'est que j'ai une autre liste de choix créée à partir du liste de personne, et de leur noms.
L'un deux s'appelle "Gaël", et il s'affiche bien !


Je me doute que cela vient de la mise à jour. Php a été mis à jour, puisque j'ai même été obligé d'enlever toutes les fonctions ereg, car sinon j'ai un message DEPRECATED.


Mais à votre avis, d'où cela peut-t'il venir ?


Merci de votre aide

Michel

ViPHP
AB
ViPHP | 5818 Messages

24 août 2010, 21:27

Bah faut voir, ici un tuto sur l'utf-8, vérifies si tu as respecté toutes les étapes

Eléphant du PHP | 94 Messages

25 août 2010, 13:12

Merci pour l'aide.

Bon, j'ai trouvé et ça ne concernait pas php mais sql.

Lors de la mise à jour, mon fichier my.cnf a été modifié.

Il m'a fallu rajouter :

character-set-server=utf8
skip-character-set-client-handshake

à la fin de la rubrique [mysqld]

Il fallait le savoir ! ...