Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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 :
$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
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) !
protected function _initEncoding() { $dbAdapter = $this->getPluginResource('db')->getDbAdapter(); $dbAdapter->query('SET NAMES UTF8'); }
J'espère que ça t'aidera
Hors ligne
Merci pour vos aides. En fait, notepad ++ doit déconner avec vista .
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
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 :
resources.db.params.driver_options.1002 = "SET NAMES UTF8;"
Hors ligne
Moi j'ai le même problème, J'ai mis dans mon php.ini
[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é
resources.db.params.charset = "UTF8"
ça génère une erreur (je travaille avec postgresql)
Ma base est définie ainsi
CREATE DATABASE mydb WITH OWNER = admin ENCODING = 'UTF8'; ALTER DATABASE mydb SET DateStyle=dmy;
Dans la fonction init() de mon contrôleur, j'utilise
$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
utf8_decode()
Hors ligne
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 :
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 :
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