Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-10-2010 16:58:21

débutant-z
Membre
Date d'inscription: 11-10-2010
Messages: 10

Problème avec charset "é"

Salut, je débute avec Zend. J'ai fait une petite application qui retourne des données à partir de MySQL. Tous les "é" ne sont pas rendu correctement. Quelqu'un peut me dire pourquoi? Et ce que je dois faire?

Daniel
debutant-z

Hors ligne

 

#2 11-10-2010 17:08:46

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Problème avec charset "é"

Il y a 15 raisons possibles.

Je te propose d'aller voir ce tutoriel : http://www.kitpages.fr/php_tutorial_utf8.php pour que tu vois où peut se situer le problème.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 11-10-2010 17:20:49

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Problème avec charset "é"

Si ta page affiche un texte du genre "é" à la place de tes "é" alors tu peux essayer deux solutions avec Zend_Db et mysql :
- rajouter "'driver_options' => array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;')" dans la fonction de connection à la base de donnée
- exécuter la requête "SET CHARACTER SET utf8" après la connexion

Ces deux commandes ont pour but de faire passer la connexion PHP<>Mysql en UTF-8. Sans ça, par défaut mysql croit que le client (PHP dans ton cas) n'accepte que l' iso-8859.

Si tu as des sortes de "?" à la place de tes accents alors il peut y avoir plusieurs possibilité :
- les tables de la base de donnée ne sont pas en UTF8 alors que tu veux y stocker du texte dans ce format là (mysql va transformer le texte comme il peut avec la perte de certains caractères)
- tu utilises certaines fonctions de php qui cassent les caractères UTF8 (par exemple il faut fournir un second paramètre à htmlentities pour qu'il traite la chaine comme de l'UTF8)
- ton serveur web ou ta page fait croire que ta page est dans un encodage qui n'est pas le bon

Le dernier cas est le plus simple à vérifier (il suffit de regarder l'encodage qui est coché dans le menu du navigateur) Le premier est simple si on regarde la requête de création de la table ou, avec un bon utilitaire de base de donnée, la structure de la table.

Le second est le compliqué. Il faut débugguer son code pour trouver à quel moment la chaine à été mal modifié. Ca peut aussi bien être un mauvais réglage de iconv ou mbstring (par exemple) qu'une erreur de programmation (utilisation de fonctions limités à l'iso, mauvais paramêtres dans les fonctions, etc)

EDIT : TIens je connaissais pas ce tutorial là.

Dernière modification par omega2 (11-10-2010 17:22:13)

Hors ligne

 

#4 13-10-2010 22:16:55

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Problème avec charset "é"

Ya un autre cas celui ou aucun caractère accentué n'est affiché, dans ce cas la c'est un problème de php et du pdo mysql

Hors ligne

 

#5 13-10-2010 23:05:24

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: Problème avec charset "é"

si les é sont affichés aussi "é", cela peut venir du navigateur qui affiche la page en iso par défaut.
Il faut rajouter la balise suivante dans le head:

Code:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

sans oublier le doctype.

Hors ligne

 

#6 14-10-2010 03:34:23

débutant-z
Membre
Date d'inscription: 11-10-2010
Messages: 10

Re: Problème avec charset "é"

throrin19 a écrit:

si les é sont affichés aussi "é", cela peut venir du navigateur qui affiche la page en iso par défaut.
Il faut rajouter la balise suivante dans le head:

Code:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

sans oublier le doctype.

Oui c'est exactement ce que j'ai fait, mais il semble que le seul charset qui est réglé mon problème soit latin1.

Hors ligne

 

#7 14-10-2010 08:58:34

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: Problème avec charset "é"

encode tes pages en utf-8 avec eclipse ou notepad++

Hors ligne

 

#8 14-10-2010 17:23:17

débutant-z
Membre
Date d'inscription: 11-10-2010
Messages: 10

Re: Problème avec charset "é"

throrin19 a écrit:

encode tes pages en utf-8 avec eclipse ou notepad++

pourquoi dois-je absolument utiliser utf-8 et non latin1? Et je suis sous mac alors motepad++...

Dernière modification par débutant-z (14-10-2010 17:23:49)

Hors ligne

 

#9 14-10-2010 18:20:13

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Problème avec charset "é"

tu peux utiliser latin1, mais tu dois utiliser le même encodage partout, sinon c'est normal que ça sorte n'importe comment wink

Hors ligne

 

#10 14-10-2010 20:04:30

débutant-z
Membre
Date d'inscription: 11-10-2010
Messages: 10

Re: Problème avec charset "é"

3uclide a écrit:

tu peux utiliser latin1, mais tu dois utiliser le même encodage partout, sinon c'est normal que ça sorte n'importe comment wink

ok non ça va j'ai mis ça dans le header.

Hors ligne

 

#11 15-10-2010 11:01:07

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: Problème avec charset "é"

ta base est encodée comment? Si elle est en UTF-8, il vaud mieux avoir tout ton projet en UTF-8. De plus, il me semble que dans le futur, latin1 ne sera plus trop supporté. (quelqu'un peut confirmer?)

Dernière modification par throrin19 (15-10-2010 11:01:47)

Hors ligne

 

#12 15-10-2010 14:21:28

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Problème avec charset "é"

throrin19 > Il était prévus avec PHP6 de rendre PHP totalement compatible unicode (aussi bien dans le core que dans les modules) mais pas d'abandonner le latin1.
Maintenant que PHP6 a été abandonné, je ne sais pas combien de temps il va falloir attendre pour que toutes les fonctions de PHP gèrent nativement autre chose que du latin1 alors avant qu'on ne puisse plus coder des fichiers php en latin1, il va s'écouler pas mal d'années.

Hors ligne

 

#13 15-10-2010 15:23:28

débutant-z
Membre
Date d'inscription: 11-10-2010
Messages: 10

Re: Problème avec charset "é"

throrin19 a écrit:

ta base est encodée comment? Si elle est en UTF-8, il vaud mieux avoir tout ton projet en UTF-8. De plus, il me semble que dans le futur, latin1 ne sera plus trop supporté. (quelqu'un peut confirmer?)

Que veux tu dire par base? Ma BD? Désolé, si ça semble stupide, mais au Québec, nous parlons plus généralement de BD. smile Elle est en utf-8. C'est dans mon layout que je change la charset en latin1:

<meta http-equiv="Content-Type" content="text/html; charset=latin1">.

Hors ligne

 

#14 15-10-2010 18:03:27

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Problème avec charset "é"

J'oubliais, il y a une aide de vue activé par défaut (à confirmé) qui encode la sortie de la vue...

Dernière modification par 3uclide (15-10-2010 18:38:27)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages