theprogrammeur Posté 17 Septembre 2007 Partager Posté 17 Septembre 2007 Bonjour Mon site est encodé en UTF-8 et le problème est que, lorsqu'on poste un nouveau message dans le livre d'or, tous les accents sont remplacés par des trucs comme "A@". Pourtant, juste après la connection à la BDD, j'ai mis cette ligne: mysql_query("SET NAMES UTF8"); D'où peut provenir le problème? Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
binarygirl Posté 17 Septembre 2007 Partager Posté 17 Septembre 2007 Faites-vous l'appel à "SET NAMES UTF8" avant d'insérer les données ET avant de les récupérer par SELECT ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 18 Septembre 2007 Auteur Partager Posté 18 Septembre 2007 J'ai utilisé SET NAMES juste après la connection à la BDD, juste avant l'insertion d'un nouveau message dans la BDD et juste avant la récupération des messages. Seulement, les caractères sont mal encodés dans la BDD (j'ai été le voir dans PHPMyAdmin) et lorsque je les modifie avec la partie admin en remplaçant les caractères "A©" par les bons caractères (comme é, è, î), il n'y a plus de problème. Je ne peux quand même pas modifier manuellement tous les messages postés, comment régler ce problème? Lien vers le commentaire Partager sur d’autres sites More sharing options...
binarygirl Posté 18 Septembre 2007 Partager Posté 18 Septembre 2007 Vous devez avoir au moins mySQL 4.1... est-ce le cas ? Et bien sûr définir les tables avec le charset UTF-8 (par défaut ce serait sans doute latin1_swedish juste pour le jeu de caractères occidental) Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 19 Septembre 2007 Auteur Partager Posté 19 Septembre 2007 J'ai MySQL 5.0.45 -Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) -Interclassement pour la connexion: utf8_unicode_ci Dans la BDD: -Interclassement, utf8_general_ci Faut-il modifier quelque chose??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
binarygirl Posté 19 Septembre 2007 Partager Posté 19 Septembre 2007 OK et les champs des tables concernés sont-ils bien définis en unicode_utf8_ci ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 20 Septembre 2007 Auteur Partager Posté 20 Septembre 2007 Les champs des tables sont en utf8_general_ci Il y a une différence entre utf8_unicode_ci et utf8_general_ci??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
binarygirl Posté 20 Septembre 2007 Partager Posté 20 Septembre 2007 Je ne sais pas vous dire comme ça mais moi j'utilise toujours utf8_unicode_ci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dadou Posté 21 Septembre 2007 Partager Posté 21 Septembre 2007 Reste la page, est elle en UTF8? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Thomas.WS Posté 21 Septembre 2007 Partager Posté 21 Septembre 2007 Oui, fais gaffe à ta déclaration dans ton entête de page Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 21 Septembre 2007 Auteur Partager Posté 21 Septembre 2007 Toutes les pages de mon site sont en UTF-8, encodées grâce à la fonction utf8_encode de PHP. Lien vers le commentaire Partager sur d’autres sites More sharing options...
binarygirl Posté 21 Septembre 2007 Partager Posté 21 Septembre 2007 (modifié) Toutes les pages de mon site sont en UTF-8, encodées grâce à la fonction utf8_encode de PHP. Vous avez ceci dans votre section <head> ? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Modifié 21 Septembre 2007 par binarygirl Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 22 Septembre 2007 Auteur Partager Posté 22 Septembre 2007 En effet, j'ai mis cette balise: <meta http-equiv="content-type" content="text/html; charset=utf-8" / De plus, dans toutes les pages j'ai mis ceci: header('Content-Type: text/html; charset=utf-8'); Mais je vous rappelle que toutes les pages fonctionnnent bien, c'est juste quand un visiteur poste un nouveau message dans le livre d'or qu'il y a des erreurs dans les caractères accentués. Et lorsque je les corrige via la zone d'admin, il n'y a plus de plroblèmes. C'est donc lors de l'encodage, du textarea du livre d'or jusqu'à la BDD qu'il y a un problème. Avez-vous besoin du code du livre d'or??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 22 Septembre 2007 Partager Posté 22 Septembre 2007 Oui, si possible au niveau de l'insert dans la base de données, voire du début de réception des données jusqu'à l'insert. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 22 Septembre 2007 Auteur Partager Posté 22 Septembre 2007 Voici le code du livre d'or: $connection = mysql_connect("localhost", "root", "");mysql_select_db("data_base");mysql_query("SET NAMES UTF8");//Si message envoyéif (isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['verif_code']) AND !Empty($_POST['verif_code'])){//Pour code anti-robot (captcha) if($_POST['verif_code']==$_SESSION['aleat_nbr']) { $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // sécurité $message = htmlentities($_POST['message'], ENT_QUOTES); // aussi pour le message $message = nl2br($message); //\n --> <br /> /*TRANSFORMATION DU BBCODE-----------------------------------------------------------------*/$message = str_replace(':bad:','', $message);$message = str_replace(':sourire:', '', $message);$message = str_replace('', '', $message);$message = str_replace(':mort:', '', $message);$message = str_replace(':pfff:', '', $message);$message = str_replace(':sourire2:', '', $message);$message = str_replace(':fun:', '', $message);$message = str_replace(':euh:', '', $message);$message = str_replace('', '', $message);$message = str_replace(':lunettes:', '', $message);$message = str_replace(':pirate:', '', $message);//Mise en forme du texte//gras$message = preg_replace('`\[gras\](.+)\[/gras\]`isU', '[b]$1[/b]', $message);//italique$message = preg_replace('`\[italic\](.+)\[/italic\]`isU', '[i]$1[/i]', $message);//souligné$message = preg_replace('`\[souligne\](.+)\[/souligne\]`isU', '[u]$1[/u]', $message); // Enregistrementmysql_query("SET NAMES UTF8"); mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')"); } else {//Si mauvais code echo'Votre code de confirmation n\'est pas bon ! Merci de réessayer. }} Ca vous aide??? Lien vers le commentaire Partager sur d’autres sites More sharing options...
theprogrammeur Posté 28 Septembre 2007 Auteur Partager Posté 28 Septembre 2007 Le problème s'est réglé de lui même. J'ai retapé tout le code du livre d'or dans un nouveau fichier et tout a été réglé (pourtant je n'ai rien changé). Encore un mystère de l'informatique. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant