Phpmyadmin / Mysql => conversion UTF8 impossible

Répondre
Sammuel
le 09/08/2009 à 22:46
Sammuel
Salut,

J'ai décidé de passer à l'UTF8, aussi, je rencontre quelques problèmes au niveau de l'encodage entre phpmyadmin et mysql.

J'utilise :
PHP 5.2
MYSQL 5.1
PHPMYADMIN 3.1

Quand j'ajoute des données (dans MYSQL) depuis un formulaire PHP que j'ai créé avec mes petites mains, les données sont bien insérées en UTF8 dans ma base de données. Et je n'utilise rien pour les encoder en UTF8... l'encodage fonctionne tout seul.

Par contre, si je souhaite ajouter des données depuis Phpmyadmin, dans cette même table, il insère les données brutes, sans les encodées en UTF8 !

Quand je parle de "données brute", c'est un texte de ce genre :
Etre averti par email lors d'une réponse à votre sujet

... avec des é, des à , etc...

Je suis donc obligé d'encoder moi même les données en UTF8 avant de les insérer directement dans Phpmyadmin smiley

Si j'utilise mon propre formulaire d'insertion de données, ça fonctionne. Si j'utilise phpmyadmin, ça ne fonctionne pas.

J'ai bo avoir tout retourné, mis tout en UTF8, phpmyadmin ne veut rien savoir ^_^

Je n'ai pas 36000 lignes à ajouter via phpmyadmin, mais ce serait quand même plus pratique s'il s'entendait bien avec son petit copain mysql :p

Sinon, j'ai remarqué qu'il y avait un "bug" avec les "à"... encore un mystère smiley

Avez vous rencontré ce genre de problème ? Si oui, comment procéder ?

Merci smiley
Keika
le 11/08/2009 à 06:27
Keika
Certainement que lors de ton insertion via PHP, tu utilises les fonctions htmlentities, magic_quotes et autres ? Qui, elles, gerent l'integration des caracteres speciaux...

Et si tu ajoutes a la main les donnees, que ce soit avec phpmyadmin ou via ton formulaire, pourquoi ne pas toujours le faire par ton formulaire car il semble fonctionner... ?
Le PHP --> C'est dur !
Sammuel
le 11/08/2009 à 11:23
Sammuel
Vraiment bizarre... J'ai codé un formulaire tout simple pour insérer des données et tous les caractères accentués ont été encodés sans problème en UTF8. Même les "à". J'ai ça en BDD :
Depuis plusieurs semaines, les enquêteurs ont orienté leurs recherches autour du praticien personnel de Michael Jackson, Conrad Murray. Soupçonné d’avoir injecté une dose fatale d’un puissant anesthésique (NDLR le Propofol) à son patient, le Dr Murray risque gros.

C'est bien de l'UTF8 ? ^_^

Pour l'insertion, j'ai juste utilisé mysql_real_escape_string. Pas d'utf8_encode ou autre fonction du genre. Et, je n'utilise pas de :

mysql_query("SET NAMES 'utf8'")
ou
AddDefaultCharset UTF-8

Et l'affiche est bon avec un simple :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Concernant Phpmyadmin, j'ai vu qu'il existait une version ONLY utf8. Peut être pour régler ce problème...
Keika
le 11/08/2009 à 11:27
Keika
mais, je ne vois pas ou est ton soucis si tu rentres tout a la main ? Il te suffit de tout rentre via ton formulaire et ca fera l'affaire. Maintenant lorsque tu entres les donnees sous phpmyadmin ca n'entre que du brut. Ce qui est normal car aucun travail sur le texte n'est effectue.
Le PHP --> C'est dur !
Sammuel
le 11/08/2009 à 12:08
Sammuel
Je pensais que Phpmyadmin pouvait encoder, directement, mon contenu brut en UTF8 ! Donc, il ne s'en occupe pas ? C'est ce que je cherche à savoir en fait.
Ce serait pratique ! car là, je suis obligé de prévoir "une zone d'administration" pour modifier/insérer certaines données dans Mysql.

Avant, quand j'utilisé l'ISO, j'avais l'habitude de faire certaines modifications via phpmyadmin... et j'aimerais bien continuer smiley

J'ai posé la question sur sourceforge pour avoir une réponse claire, nette et précise :p
Sammuel
le 11/08/2009 à 19:46
Sammuel
J'ai fait d'autres tests et maintenant mes données sont affichées avec des é, des à, des è, en clair dans Phpmyadmin. Et tout s'affiche correctement sur ma page.

J'ai pris exemple sur le contenu d'un forum de type Phpbb qui tourne en UTF8... et ses données, dans Phpmyadmin, sont affichées en "clair" aussi (avec des é, des à , etc...). Donc, j'ai aussi tenté le coup ^^

Par contre, j'ai été obligé d'utiliser :
mysql_query("SET NAMES 'utf8'");

... sinon, cela m'affiche des caractères pas jolies :p

J'aurais cru que mysql stockait des caractères en UTF8, mais apparemment non. A moins que je m'y prenne mal smiley
LA GLOBULE
le 18/08/2009 à 17:42
LA GLOBULE
MySQL stocke ce que tu lui donnes.

Tout dépend ensuite de comment tu récupères l'info (set name ou non) et de comment tu l'affiches (header utf8).
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours