Problème d'encodage de caractères avec bdd

Guillaume -  
creadiff Messages postés 483 Statut Membre -
Bonjour,
J'ai fait un livre d'or avec base de donnée, et lorsque mon commentaire est enregistré dans la base de donnée, il n'est pas encodé comme il le faut. J'avais au début des caractère comme : ©Ã©Ã©. J'ai ensuite utilisé ce code pour remédier au problème :
$auteur=htmlentities($_POST['pseudo'],ENT_QUOTES,'utf-8');
et cette fois je n'ai plus les symboles que j'avais au début, mais les symbole type : &eacute, J'aimerai cependant qu'il m'affiche les caractères correctement, et non pas les équivalences.
Au passage, lorsque je fait une requête directement sur phpmyadmin, je n'ai aucun soucis avec les é, è, à ... etc. donc le problème vient du script php j'imagine...

Si quelqu'un a une solution à mon problème, je lui en serais très reconnaissant,
Merci.

5 réponses

  1. Guilaume
     
    Problème à moitié résolu. J'arrive à afficher correctement avec un SELECT mes éléments sur ma page php, mais sur phpmyadmin ils restent avec ces code : ©Ã©Ã© .
    Comment faire pour qu'ils soient écrit correctement dans ma base ?

    Merci d'avance

    Guillaume
    0
  2. Guilaume
     
    Merci,
    Mais c'est au niveau de la base de donnée que ça ne va pas. quand j'enregistre dans ma base, je vois les symbole ©Ã©Ã© et quand je précise dans le script php que les variables sont en UTF-8 j'ai ces symbole là dans ma base de donnée : é qui sont les équivalences de "é" en html. Cependant, quand je fais un SELECT pour les afficher sur une page de mon site, je retrouve les caractères accentué comme il faut.
    Mon seul soucis est phphmyadmin. J'ai pourtant précisé que ma table était en utf-8.

    Merci de votre aide
    0
  3. creadiff Messages postés 483 Statut Membre 57
     
    As-tu lu le tutoriel ? Il faut :

    - exécuter la requête SET NAMES 'utf8' avant toute autre requête SQL

    - préciser l'encodage des caractères dans l'éditeur

    - envoyer l'en-tête HTTP correspondant à l'encodage désiré

    Apparemment l'encodage des tables est correctement en place.
    Pour ce qui est de préciser dans le script PHP que les variables sont en UTF-8, pourriez-vous expliquer de quoi il s'agit ?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Guilaume
     
    Je parle de cette ligne de code :
    $auteur=htmlentities($_POST['pseudo'],ENT_QUOTES,'utf-8');
    avec ça j'obtient des symbole de ce type : & e a c u t e ; (sans les espaces bien sur).
    alors qu'avec cette ligne de code :
    $auteur=$_POST['pseudo'];
    j'obtiens des caractère de ce type: ©Ã©Ã©

    Je parle bien sûr de l'interface phpmyadmin.
    0
    1. Guilaume
       
      Qu'est-ce que vous entendez par "préciser l'encodage des caractères dans l'éditeur " ?
      J'ai fait la requete SET NAME 'utf8'
      j'ai ensuite fait ma requête pour créer ma table et ses caractéristiques
      dans "Interclassement" j'ai mis utf8_general_ci
      Et dans l'entête de la page ou se situe la requete sql, j'ai bien le charset utf8.
      Et avec ça j'ai les symboles : ©Ã©Ã©
      0
    2. creadiff Messages postés 483 Statut Membre 57
       
      Que éditeur utilisez-vous ? Je peux indiquer la manip' selon le logiciel.

      NB : ne pas confondre les balises <meta /> en code HTML avec les en-têtes HTTP (à préciser dans le .htaccess par exemple).

      NB 2 : c'est très dangereux d'insérer directement un enregistrement dans la base de données sans l'échapper (injection SQL). Il faut au moins utiliser la fonction addslashes().
      0
    3. Guilaume
       
      Adobe Dreamweaver. Oui en effet j'ai confondu les balise <meta> avec le .htaccess. Quand vous parlez d'injection SQL, vous parler bien du script php ? Et que fait la fonction addslashes ?
      Merci pour vos réponses.
      0
    4. Guilaume
       
      Je viens de trouver ma réponse, addslashes() protèges les données. En fait j'utilise mysql_escape_string() c'est la même chose non ?
      0
    5. creadiff Messages postés 483 Statut Membre 57
       
      mysql_escape_string utilise des entités HTML, ce qui rallonge les chaînes de caractères... mais ça marche aussi.
      0