Problème de charset...

Résolu
Bonjour,

J'ai un souci de charset sûrement très basique pour ceux qui s'y connaissent mais que je n'arrive absolument pas à résoudre :
Je récupère des infos dans ma bdd (qui est en utf8_general_ci) depuis un script php (enregistré au format utf8) et auxquelles j'ai ajouté un utf8-decode avant affichage, mais rien à faire, tous les accents sortent en "?"
Quelqu'un a une idée d'où peut venir le problème ?
Pour info il s'agit d'un script appelé par une requête json, le format n'est pas déclaré comme avec un fichier html (dois-je le faire ?)
Merci d'avance pour votre aide, ça me pose un énorme problème !! :-)

4 réponses

  1. Modérateur
    Bonjour
    Comment as tu code la connexion à ta bdd ?
    As tu essayé de forcer le header en utf8 (voir la fonction header de php)
    0
    1. pr ma bdd, j'ai un fichier config avec

      define("DB_HOST", "mon serveur");
      define("DB_NAME", "ma bdd");
      define("DB_USER", "user");
      define('DB_PASSWORD', 'pwd');


      et voici mon code

      $db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
      $query = "SELEC * FROM themes_member tm
      WHE iduser = $iduser";
      if ($q = $db -> query($query))
      {
      while($data = $q->fetch(\PDO::FETCH_ASSOC))
      {
      $packs[] = $data;
      }
      }
      if (count($packs) > 0) { return ($packs); } else { return false; }


      Pour le header, je n'ai rien fait de spécial, non, je regarde ça de suite :-)
      0
    2. bon je viens de tester la fonction header, mais ça n'a rien changé du tout :'(
      0
    3. J'ai aussi essayé ça, mais ça n'a pas l'air d'être la bonne façon de l'écrire, ça me renvoie
      Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2019] Unknown character set' in /web/subset/extension/functions.php:51 Stack trace: #0 /web/subset/extension/functions.php(51): PDO->__construct('mysql:host=sql1...', 'V@0-8tTus') #1 /web/subset/extension/bget_user_infos.php(48): get_packs('423') #2 {main} thrown in /web/subset/extension/functions.php on line 51

      avec cette correction :
      $db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8,'.DB_USER, DB_PASSWORD);

      Désolée, je ne connais rien en PDO...
      0
    4. Merci beaucoup pour ce lien ! Ca m'a permis de faire une requête bcp plus propre (try, catch etc) tout en spécifiant charset=utf8, mais malheureusement, j'ai toujours le même problème d'accents ... :'( :'( :'(
      0