IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

db2 et charset


Sujet :

Doctrine2 PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 100
    Par défaut db2 et charset
    Bonjour,

    Je commence à travailler avec Symfony2 et j'ai des soucis avec la récupération de données d'une base DB2 existante (connectée via l'extension ibm_db2) : les voyelles accentuées arrivent sous la forme de "Agn�s ". C'est probablement une histoire de charset, mais j'ai vérifié le fichier config.yml : le charset est bien positionné. Le problème me semble se situer au niveau de l'extraction des données.

    Le code de mon Controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        $repository=$this->getDoctrine()->getEntityManager()->getRepository('AshBundle:Candidats');
        $candidats=$repository->findAll();
     
        return $this->render('AshBundle:Candidats:visu.html.twig',array('candidats' => $candidats));
    et un extrait du fichier config.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    doctrine:
        dbal:
          default_connection : ash
          connections:
            capash:
              driver:   %database_driver%
              host:     %database_host%
              port:     %database_port%
              dbname:   ASH_T
              user:     %database_user%
              password: %database_password%
              charset:  utf8
    (J'ai essayé utf-8 sans succès)
    Du coup, dans l'affichage, les données dans lesquelles il y a des voyelles accentuées n'apparaissent carrément pas

    Dans le template twig, j'ai mis la balise meta avec le content et le charset...

    Quelqu'un aurait une idée d'ébauche de commencement de début de solution ?

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    t'as accès a ton db2 en ligne de commandes ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 100
    Par défaut
    Oui. Quand je lance l'interpréteur de commandes db2 sur ma machine de dev, les voyelles accentuées sont mal interprétées.

    Quand je vais sur le serveur db2 où la base est hébergée, elles sont correctes.

    J'imagine que c'est au niveau du driver db2 de ma machine de dev qu'il y a quelque chose à faire...

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    fait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db2 get db cfg for tabase

    pour mettre tout ca dans un fichier texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db2 get db cfg for tabase > config.txt

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 100
    Par défaut
    Ah oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     Database territory                     = FR
     Database code page                  = 1252
     Database code set                    = IBM-1252
     Database country/region code     = 33
     Database collating sequence       = UNIQUE
    ...ça doit venir de là ? Mais j'ai utilisé cette base dans un projet XmlRad et je n'ai pas eu de souci.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    déjà ta base n'est pas en UTF-8,
    après avoir regardé visiblement y'a pas de SET NAMES avec DB2

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 100
    Par défaut
    J'ai créé une base DB2 en utf-8, mais ça ne change rien. Et de toute façon, les autres bases sur lesquelles je travaille sont utilisées par d'autres applications et je ne peux pas en modifier le code page (souvent en iso-88959-15).

    Quel que soit le code page de la base, quand j'écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            $response=new Response();
            $conn=$this->get('doctrine.dbal.ash_connection');
            $candidats=$conn->fetchAll("select * from candidats");
            $response->headers->set("Content-type","text/html;charset=iso-8859-15");
       $response->setContent('<html><head></head><body>&egrave;'.$candidats[0]['PRENOMS'].'</body></html>');
            return $response;
    ... les accents sont conservés

    J'ai donc essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        $repository=$this->getDoctrine()->getEntityManager()->getRepository('AshBundle:Candidats');
        $candidats=$repository->findAll;
        $response=new Response();
            $response->headers->set("Content-type","text/html;charset=iso-8859-15");
     
     
        return $this->render('AshBundle:Candidats:visu.html.twig',array('candidats' => $candidats),$response);
    ... mais ça ne donne pas de bons résultats. Comme si le passage en paramètres du tableau ne se passait pas bien.

    Est-ce que c'est vraiment obligé de travailler en utf-8, ou peut-on paramétrer Symfony2 et Doctrine pour travailler en iso-8859-15, ce qui me simplifierait grandement la tâche ?...

    Autre question à la cantonade : est-ce que Doctrine pourra bientôt accéder aux bases via les pilotes ODBC ?

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    envoie un ticket de bug, sinon tu vas devoir faut des utf8_encode

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 100
    Par défaut
    Bon, a priori, le problème semble résolu en ajoutant, dans les variables d'environnement (Windows server 2003) :
    1208 correspondant au charset UTF-8.

    Il faut juste penser à rebooter le serveur avant de tester.


    Et quel que soit l'encodage de la base DB2 (ISO-8859-1, ISO-8859-15, UTF-8), je n'ai apparemment plus de problèmes d'accent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 26/04/2007, 13h21
  2. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  3. [CHOIX]interbase, postgreSQL ou DB2?
    Par biohazard dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 28/03/2003, 14h41
  4. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26
  5. [DB2] Au sujet de...
    Par Eric Denné dans le forum DB2
    Réponses: 2
    Dernier message: 16/09/2002, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo