Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-08-2009 11:14:44

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Problème d'encodage UTF8

Bonjour,

J'ai un problème d'encodage utf8 à l'affichage. Tous les caractères spéciaux ressemblent à un losange avec un point interrogation.

Mes fichiers sont enregistrés en UTF8 sans BOM. Les données des formulaires sont enregistrées correctement dans ma db (les accents sont correct).

Mais dans mes views, lorsque j'affiche un caractère avec accent (soit en dur ou dynamiquement) ça pose problème.

Voila boostrap :

Code:

        $this->_layout = Zend_Layout::getMvcInstance ( )->getView ( );
        $this->_layout->setEscape ( 'utf8_encode' );
        $this->_layout->headLink ( )->appendStylesheet ( '/' . $this->_config->base->dir . '/public/css/style.css' );
        $this->_layout->headLink ( )->appendStylesheet ( '/' . $this->_config->base->dir . '/public/css/style-manager.css' );
        $this->_layout->headScript ( )->appendFile ( '/' . $this->_config->base->dir . '/core/scripts/manager.js' );
        $this->_layout->headTitle ( 'My Network' );
        $this->_layout->doctype ( 'XHTML1_TRANSITIONAL' );
        $this->_layout->addHelperPath (  $this->_root.S.'core'.S.'helpers' );

En tout cas la partie qui vous intéresse je pense.

Je vous remercie de votre aide d'avance.

Cordialement,

PS: s'il vous faut plus de code, il n'y qu'a demander.

Hors ligne

 

#2 01-08-2009 12:24:21

dev-k
Membre
Lieu: Barcelona
Date d'inscription: 18-07-2009
Messages: 77
Site web

Re: Problème d'encodage UTF8

Salut,
rajoutes

Code:

$this->_layout->headMeta()->setHttpEquiv('content-type', 'text/html; charset=utf-8');

Hors ligne

 

#3 03-08-2009 08:24:41

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: Problème d'encodage UTF8

J'ai eu le meme souci il y a quelques jours, et en plus de mettre dans le code l'instruction indiquée par dev-k, j'ai du ajouter dans mon Bootstrap une fonction pour dire à Mysql et Php de "communiquer" en UTF-8 (j'ai trouvé ceci sur un autre post de ce forum) !

Code:

protected function _initEncoding()
    {
        $dbAdapter = $this->getPluginResource('db')->getDbAdapter();
        $dbAdapter->query('SET NAMES UTF8');
    }

J'espère que ça t'aidera


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#4 03-08-2009 19:26:44

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Problème d'encodage UTF8

Merci pour vos aides. En fait, notepad ++ doit déconner avec vista sad.

Pour faire simple, lorsque notepad ++ "ne répond pas" (pour reprendre les termes de vista), je suis obligé d'éteindre le log à l'arrache. Ce qui implique qu'il reprend les config par défaut de notepad et donc l'enregistrement des fichiers en AINSI ou un truc du genre.

Donc je croyais que mes fichiers étaient bien enregistrés en UTF8 sans BOM.

Merci encore pour votre aide.

Cordialement.

Hors ligne

 

#5 03-08-2009 19:57:29

tomtom
Membre
Lieu: Strasbourg
Date d'inscription: 07-01-2009
Messages: 14

Re: Problème d'encodage UTF8

Salut,

voila une petite astuce qui permet d'eviter le $db->query('SET NAMES UTF8')
(avec PDO_MYSQL pour les autres drivers j'ai pas tester)

dans votre fichier de config rajouter :

Code:

resources.db.params.driver_options.1002 = "SET NAMES UTF8;"

Hors ligne

 

#6 03-08-2009 22:16:42

dev-k
Membre
Lieu: Barcelona
Date d'inscription: 18-07-2009
Messages: 77
Site web

Re: Problème d'encodage UTF8

ou plus simplement

Code:

resources.db.params.charset  = "UTF8"

Hors ligne

 

#7 13-08-2009 12:46:42

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: Problème d'encodage UTF8

Moi j'ai le même problème, J'ai mis dans mon php.ini

Code:

[iconv]
iconv.input_encoding = UTF-8
iconv.internal_encoding = UTF-8
iconv.output_encoding = UTF-8

[mbstring]
mbstring.language        = Neutral; (UTF-8) (par défaut)
mbstring.internal_encoding    = UTF-8
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Spécifie l'ordre
mbstring.http_output          = UTF-8   ; Utilise UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
;mbstring.substitute_character = none;
;mbstring.func_overload = 0
;mbstring.strict_encoding = Off

J'ai aussi essayé

Code:

resources.db.params.charset  = "UTF8"

ça génère une erreur (je travaille avec postgresql)

Ma base est définie ainsi

Code:

CREATE DATABASE mydb
  WITH OWNER = admin
       ENCODING = 'UTF8';
ALTER DATABASE mydb SET DateStyle=dmy;

Dans la fonction init() de mon contrôleur, j'utilise

Code:

$this->view->setEscape('utf8_encode');

Le seul moyen que j'ai trouvé est d'utiliser à chaque fois le code suivant mais c'est très lourd à répéter

Code:

utf8_decode()

Hors ligne

 

#8 09-02-2010 19:11:20

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Problème d'encodage UTF8

Je me permet d'upper ce topic.

J'ai le même problème lorsque je tente récupérer des données de la base de données. Ma base est bien configurée en UTF-8, tout comme les tables ainsi que chaque champs de la table. Mon Zend est bien configuré en UTF8 également (la vue, ainsi que tous les fichiers, en UTF8 sans BOM).

J'utilise Zend Framework 1.10, et la solution donnée précédemment devrait fonctionner, à savoir :

Code:

resources.db.params.charset  = "UTF8"

Mais ceci ne fonctionne pas et, finalement, la seule "solution" qui fonctionne est celle indiquée plus haut, celle-ci :

Code:

protected function _initEncoding()
    {
        $dbAdapter = $this->getPluginResource('db')->getDbAdapter();
        $dbAdapter->query('SET NAMES UTF8');
    }

Pas que cette solution ne me convienne pas, mais visiblement la première méthode est celle introduite par Zend pour répondre à ce soucis, je m'étonne donc qu'elle ne fonctionne pas alors qu'elle est censé donner le même résultat que la deuxième...

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