Forum Imprimante

 Oublié Pass?
 Register
Rechercher
Voir: 1696|Réponse: 11

Problème: UTF-8 // PHP // phpmyadmin

[Copier lien]

Post sur le : 2012-12-28 19:18:18 |Tout les posts
Bonjour, alors ça fait 8 heures que je cherche uns solution, voici le problème:
J'ai des pages PHP qui envoi des données entrées par l'utilisateur vers un BD MySQL.  Ces données sont ensuite affichées sur différentes pages PHP.
Tous les fichiers PHP sont en UTF-8, avec le META et Content-Header, toutes mes tables et colonnes sont en utf8_general_ci...
Si je tape "  é  " dans un mon formulaire, il s'affiche "  Ã©  " dans phpmyadmin.  Et une fois cette info sur la page de résultat PHP, il s'affiche bien: " é "...
Quelqu'un à une idée pourquoi mes pages PHP envoient et recoivent les donnée UTF-8 et les affichent correctement, alors que phpmyadmin, semble recevoir les même données UTF-8, met les affiche comme si c'était du ANSI  (si j'ai bien compris toute ma lecture sur le sujet..)
Comment puis-je dire à phpmyadmin-MySQL que les données qu'il recoit sont du UTF-8...
Si je rentre manuellement dans phpmyadmin des infos, ex: é
Et bien il s'affiche bien dans phpmyadmin, mais j'ai un � dans l'affichage de ma page...
Merci pour votre aide
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 20:29:46 |Tout les posts
Comme je l'explique dans un article (voir lien ci dessous) le SET NAMES permet de prévenir le SGBD (MySQL dans ce cas là) que les interactions se feront avec tel ou tel encodage.
Pour rétablir une cohérence de données dans vos tables il faut faire deux requêtes (c'est une petite astuce, voir l'article ci-dessous).
http://www.aquatz.com/Encodage-convertir-un-site-en-UTF8-PHP-MySQL_a36.html
Enfin n'hésitez pas à utiliser mb_detect_encoding en PHP pour savoir quel est l'encodage d'une chaîne de caractères.
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 21:39:11 |Tout les posts
Eh bien j'avais suivi le tuto de franescu (merci) et terminé par le set names... et ça n'avais pas focntionné: ma bdd étzi toujours en latin 1 (ça disait utf8 mais l'affcihage des données prouvait iso8859-1...........)
j'ai ajouté dans le fichier php qui extrayait les données l mysql_query("SET NAMES 'utf8'");  et là ça marche!
Pourquoi???????
j'ai pourtant exécuté la requête set names ....
si qqun sait...........
Réponse

Accessoires Signaler

Post sur le : 2012-12-28 22:44:56 |Tout les posts
Tu peux essayer dans un premier temps de forcer la conversion à utf-8 avant de stocker les données la bdd avec utf8_encode. Mais le problème est ailleurs.
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 00:07:00 |Tout les posts
J'ai essayer un utf8_encode sur les données avant de les rentrer dans la BDD, mais là l'affichage était mauvais dans les 2 cas...
En faisant un utf8_decode avant de les envoyer dans la BDD, et un utf8_encode avant d'afficher dans ma page PHP, tout est correct...  Les é sont des é dans mes PHP, et dans phpmyadmin....
Mais comme tu dis, le problème est ailleurs, car c'est un peu stupide de décoder et ré-encoder TOUTES les données...  Quelqu'un a une idée du pourquoi phpmyadmin fait le bordel avec les caractères spéciaux...???
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 01:52:04 |Tout les posts
"En faisant un utf8_decode avant de les envoyer dans la BDD, et un utf8_encode avant d'afficher dans ma page PHP, tout est correct... Les é sont des é dans mes PHP, et dans phpmyadmin...."
C'est donc que ton encodage dans les colonnes mysql est incorrect, parce que si tu nourris ta bdd avec des caractères issus de utf8_decode, ils sont en ansi, et justement si tu dis que marche, y'a un truc qui cloche :o
Essaie de modifier l'encodage dans ta bdd, voire de passer en latin...
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 03:01:10 |Tout les posts
C'est ça, mon phpmyadmin déconne...!
Un "é" encodé UTF-8 lu par un qqc ANSI donne "é", ce qui est le cas de mon phpmyadmin.
Si je lui décode mes "é", la il comprend, ce qui prouve qu'il "lit" en ANSI...
Pourtant, cette colonne est en utf8_general_ci.
La table est en utf8_general_ci.
Dans phpmyadmin, je vois: MySQL charset:  UTF-8 Unicode (utf8)
Et ceci: MySQL connection collation: utf8_unicode_ci
ATTENTION:  pendant que j'écrivais ce message, j'ai lu un autre info ailleurs et j'ai essayer...  Et ça fonctionne: la commande est la suivante: mysql_query("SET NAMES 'utf8'");
Je mets ça juste après mon mysql_select_db($dbname); et ça semble fonctionner... Pourquoi, je suis pas sûr étant donné que toutes mes tables et colonne sont en utf8...  Mais bon, si ça à l'air de fonctionner...
Merci pour ton aide, juste le fait d'avoir qqn avec qui se renvoyer les idées aide beaucoup...
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 04:23:46 |Tout les posts
mysql_query("SET NAMES 'utf8'");
merci bcp; vous m'avez sauvé la vie!
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 05:44:57 |Tout les posts
mysql_query("SET NAMES 'utf8'");
ça m'a résolu mon problème aussi !!
merci beaucoup :)
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 07:07:48 |Tout les posts
j'ai mis ce script après toutes mes connexion à ma base mais j'ai toujours les ? avec le losange noir... dans ma base, les données sont en utf8 et les accents sont tous lisibles mais quand je fais mb_detect_encoding($var); il affiche "ASCII"... je comprends plus rien. ma base est en utf8, mes php en utf8 mais l'affichage en ASCII... comment résoudre ce problème? HELP
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 08:36:46 |Tout les posts
Même problème, même solution :
mysql_query("SET NAMES 'utf8'");
à rentrer dans le script de connexion à la base.
Merci beaucoup
Réponse

Accessoires Signaler

Post sur le : 2012-12-29 10:08:04 |Tout les posts
Bonjour je cherche a résoudre ce même problème sauf que dans mon cas tout est encodé en UTF-8 (ma base et mes fichiers) mais en mettant le mysql_query("SET NAMES 'utf8'"); ca ne fonctionne absolument pas ...
Réponse

Accessoires Signaler

Vous devez vous connecter d'abord connect | Register

Contact Us| Archive| Forum Imprimante

GMT+1, 2024-03-29 06:38

Powered by Discuz! 7.2

Release 20121101, © 2001-2024 Forum Imprimante.

Top