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

Zend Framework PHP Discussion :

Encodage UTF8 et ZF


Sujet :

Zend Framework PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 84
    Points : 80
    Points
    80
    Par défaut Encodage UTF8 et ZF
    Bonsoir à tous,

    Je suis un tout jeune débutant en ZF et j'ai pu voir au fil de ce post, ce post, et cette FAQ, que les pb d'accents et plus globalement d'encodage sont légion.

    Ces ressources ne m'ont pas suffits pour régler l'ensemble de ces pb, d'où ce post, qui a pour ambition de corriger une bonne fois pour toutes ces pb d'encodage.

    Pour ma part, vu que des gens beaucoup plus intelligents que moi ont décidé de mettre ZF en UTF8 par défaut, je me suis dis que j'allais le conserver et faire avec...

    Pour cela j'ai suivi la FAQ et ajouté un setEscape dans la fonction init() de chacun de mes controleurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function init()
        {
            ...
            $this->view->setEscape('utf8_encode');
            ...
        }
    Hélas, cela n'a corrigé qu'une partie de mes pb puisque qu'une partie des affichages et l'ensemble de ce qui provient de la base de données reste avec des affichages tordus :
    Ajouter un nouvel �v�nement
    Title Description
    Mon évènement Jolie description de l'évène
    Merci d'avance à tous pour votre aide !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,

    Qu'avez-vous mis comme encodage par défaut de vos pages web.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 21
    Points : 27
    Points
    27
    Par défaut Html entities
    Perso, j'ai fini par contourner le problème en passant les parties textes de ma DB en html entities.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Citation Envoyé par bboulanger84 Voir le message
    Perso, j'ai fini par contourner le problème en passant les parties textes de ma DB en html entities.
    Oui bien sûr donc le mot 'mangé' tu me mets comme ceci dans ta db
    Peux tu me dire comment va tu faire une simple recherche de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT champ FROM table WHERE champ LIKE 'mangé'
    Et bien tu ne sauras pas, imagine un sytème de login et de mot de passe, et que je met des accent dans mes mots de passe ou simplement un caractère de type '&', bonjour le travail.

    En gros ce n'est pas une bonne idée.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    J'ai mis l'entièreté de mon site en utf-8, je dois avoué que j'ai rencontré pas mal de problèmes. Voici les quelques solutions qui m'ont bien aidées.

    Pour commencer, je travails avec dreamweaver 8 et pour chaque fichier, je dois m'assurer qu'il est bien enrgistré en utf-8.
    Pour ce faire, je vais dans Modify > Page Properties (ou Ctrl+J). Là je choisi 'Title/Encoding' et je mets Encoding à 'Unicode (UTF-8)'. Ceci règle tous les problèmes d'affichage par les echo et companie. Il faut bien comprendre que cela à directement à voir avec la façon dont le fichier lui même est enregistré sur le disque dur et pas avec la programmation.

    Puis au niveau de la base de données (mysql), je spécifie pour toutes mes tables la Collation utf8_unicode_ci via phpadmin (pour les tables existantes, allez dans l'onglet 'Operation' de la table). De plus au niveau du code pour la connexion, j'execute le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // First create the connection
    $db = Zend_Db::factory($config->database->adapter,  $config->database->params->toArray());
    // This is the only way the database returns contents encoded in utf8
    $db->getConnection()->exec("SET NAMES 'utf8'");
    Ce qui assure que toutes les données qui viennent de la base de données sont bien encodées en utf-8.

    Et enfin, je spécifie pour mes views :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    ...
    $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');
    ?>
     
    <?= $this->headMeta() ?>
    Voila, pour moi avec ça tout marche. Dites moi si ça marche aussi pour vous

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 21
    Points : 27
    Points
    27
    Par défaut A essayer
    Merci de ces interventions,
    Maître Pylos a parfaitement raison, le programme n'est pas encore en phase de test... => autant prévenir que guérir !
    Merci aussi pour la description de la procédure, je vais remanier mon projet dans ce sens

    A+, bernard.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    Merci pour ces réponses.
    oliviercuyp, je m'en vais tester ta solution de ce pas !
    Je vous tiens au jus.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    Mine de rien voilà plus d'une heure que je suis sur mon pb d'encodage... mais cette fois je pense tenir le bon bout !

    Je vois désormais tous mes accents (qu'ils proviennent du code comme de la base de données), seulement j'ai perdu ma mise en page CSS (étrange il faut que je regarde ça !!)

    La procédure que j'ai suivie :

    1. Encoder la base et chacune des tables existantes en UTF-8
    2. Dire à ZF que la BDD est désormais sous ce format : $db->getConnection()->exec("SET NAMES 'utf8'");
    3. Enregistrer physiquement tous les fichiers sources en UTF-8
    4. Enlever le $this->view->setEscape('utf8_encode'); de l'init de chacun de mes controllers


    Ma connexion en UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Mise en place de la BDD.
      $db = Zend_Db::factory($config->db);
      $db->getConnection()->exec("SET NAMES 'utf8'");
      Zend_Db_Table::setDefaultAdapter($db);
    Configurer l'enregistrement en UTF-8 avec Eclipse
    Windows->Preferences puis Général -> Content types -> Text -> PHP et de spécifier Default encoding à UTF-8 -> puis clic sur le bouton "UPDATE" pour builder le projet.
    Merci donc à tous et à toi en particulier oliviercuyp.
    Next step, avancer le projet !

  9. #9
    Membre actif Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Points : 240
    Points
    240
    Par défaut
    Merci oliviercuyp pour ta réponse

    Par contre Amon as tu compris pourquoi tu as perdu ton CSS ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    J'y suis dessus, mais c'est bizarre puisque mon URL qui link la CSS n'a pas changé et semble correcte :

    <link rel="stylesheet" type="text/css" media="screen" href="/zf/public/css/styles.css" />
    Je mettrai à jour ce post lorsque j'aurai trouvé.

    Edit
    Le problème semble être un problème de chemin et non d'encodage puisque je viens de faire de tests en local et avec une URL absolue comme lien CSS et ça fonctionne !

    Mais je ne vois pas pourquoi ça a sauté d'un coup comme ça puisque je n'ai rien touché à ce côté du code lors de mes modifs d'encodagee ! :-/

    Je creuse encore.

  11. #11
    Membre actif Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Points : 240
    Points
    240
    Par défaut
    Surtout que c'est surement au moment ou tu as encodé ta page en utf-8 ...

  12. #12
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Salut,
    Citation Envoyé par Amon Voir le message
    Pour ma part, vu que des gens beaucoup plus intelligents que moi ont décidé de mettre ZF en UTF8 par défaut, je me suis dis que j'allais le conserver et faire avec...
    Je ne sais pas si la décision de tout encoder en UTF-8 est une marque d'intelligence, mais c'est en tout cas souvent nécessaire pour des sites multi-langues, et indispensable quand on manipule des alphabets non latins. Hormis ce cas de figure, d'expérience, on a tout intérêt à rester en ISO-8859-1.

  13. #13
    Membre actif Avatar de miya
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 469
    Points : 240
    Points
    240
    Par défaut
    un réup! car le sujet sur l'encodage mérite d'être approfondis

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

Discussions similaires

  1. [Encodage] utf8 image affichage
    Par oim dans le forum Langage
    Réponses: 7
    Dernier message: 05/04/2007, 14h24
  2. Pb encodage utf8
    Par rems14 dans le forum Outils
    Réponses: 1
    Dernier message: 18/02/2007, 19h47
  3. [Tableaux] Encodage utf8 d'un tableau
    Par lodan dans le forum Langage
    Réponses: 8
    Dernier message: 28/08/2006, 13h57
  4. Problème d'encodage UTF8
    Par vg33 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 19h28
  5. fonction native d'encodage utf8 ?
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/05/2006, 17h27

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