Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
je m'appelle Aurélien je travaille depuis peu sur un projet existant de ma société sous Zend Framework. J'apprends donc au fur et à mesure.
Le problème que j'ai est que je n'arrive pas à afficher les caractères caractères accentuées "à","è" ... extraits de ma base de données. Je dois préciser que cette procédure d'extraction de ma base Mysql 5 affiche à l'écran à l'aide du Datagrid de Zend.
Pour éviter tout soupçons je me suis fait une procédure simple d'extraction avec un "echo" pour voir si ça donnait le même résultat => IDEM. Les caractères affichés sont des "?". Je tient aussi à préciser que j'ai fait beaucoup de tentatives avant d'écrire ici en prenant soin de lire les post des gens qui ont eu des problèmes similaires. Malheureusement je ne suis pas arriver à trouver la solution. Si quelqu'un veut bien me filer un coup de main ça me serait très utile...
Je tourne sous apache 2.2, et php 5.
J'ai essayé au niveau de mon config.ini ces instructions:
resources.view.config.encoding = "UTF-8"
resources.view.meta.httpEquiv.1.content = "text/html; charset=utf-8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"
Dans mon fichier layout.phml j'ai bien cette istruction-ci:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Dans mon Bootstrap.php à l'appel de la fonction _initView j'ai aussi essayé ça:
$this->headMeta()->setCharset('UTF-8');
Mes instructions d'extraction des données:
$entreprisesModel = new Default_Model_DbTable_Entreprises();
$entreprises = $entreprisesModel->fetchAll();
$html = '';
$i = 1;
foreach ($entreprises as $entreprise) {
$html .= '<tr><td>'.$i.'</td><td>'.$entreprise->nomEntreprise.'</td></tr>';
$i ++;
}
echo '<table>'.$html.'</table>';
=> Il m'affiche les caractères spéciaux avec "?"
Précision je n'utilise PAS mysqli.
Avec ceci c'est pareil:
$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$dbAdapter->setFetchMode(Zend_Db::FETCH_OBJ);
$grid = new Bvb_Grid_Deploy_Table($dbAdapter,'Liste entreprises','/tmp);
$grid->from('entreprise');
$this->view->grid = $grid->deploy();
Merci d'avance...
Aurélien
Hors ligne
T'es en php 5, mais php 5.0 ou php > 5.2?
Hors ligne
Salut,
La version du Php est 5.3.2, pourquoi ça peut avoir une importance?
Tu as un idée de comment faire?
Hors ligne
Hello,
Parce qu'il existe un bug connu avec pdo_mysql en version 5.3.0 par exemple.
@+
Hors ligne
Tu aurais plus d'infos s'il te plaît qui me permettent de comprendre si c'est ça ou non?
Hors ligne
Les problèmes d'encodage sont assez récurrents sur ce forum. La règle c'est que toute la chaîne doit être en UTF-8 : la base, le connecteur, le charset html et surtout les fichiers (qu'on oublie parfois).
Il est très difficile de répondre sur ce sujet. Essaies de rechercher sur ce forum "accents" ou "utf".
Hors ligne
Si tu est en 5.3.2 cherche pas plus loin, test avec des versions plus ancienne (avec wamp c'est super simple d'installer et de choisir ça version de php)
Hors ligne
Salut,
Merci de ta réponse mais tu te rends compte de ce que tu me dit???
Un problème de character set survient donc je change la version du PHP? Quand tu as un problème avec ta voiture tu la changes ? Ça me parait tellement être une abbération excuses moi...!
Surtout que changer la version c'est peut-être facile pour un projet unique mais imagine toi un serveur avec un tonne de projets! Je n'ose pas imaginer ce qu'un tel changement puisse impliquer..
J'espère bien trouver autre chose que changer de PHP car ça me parait pas être la bonne solution sincèrement mais merci quand même de la suggestion.
Aurélien
Hors ligne
Bah écoute j'y peu rien si y'a un bug avec le pdo_mysql, donc oui si j'ai une voiture et que par exemple je veux rouler à 300km/h je change de voiture car la mienne ne le permet pas...
Hors ligne
Pour afficher tous tes caractères comme il le faut.
En ce qui concerne ta base de donnée il faut vérifier que tous les champs soient en encodage utf8_unicode_ci ce doit aussi être le cas de la base de données, des tables et des champs.
Concernant les fichiers que ce soit php, js, html ou autre, il faut bien penser les enregistrer en UTF-8 (Sans BOM). Si tu utilise notepad++ tu peux vérifier cela dans le menu (encodage ou format).
Normalement cela te permettra d'éviter tous les soucis d'encodage.
Hors ligne
Xim a écrit:
Pour afficher tous tes caractères comme il le faut.
En ce qui concerne ta base de donnée il faut vérifier que tous les champs soient en encodage utf8_unicode_ci ce doit aussi être le cas de la base de données, des tables et des champs.
...
En plus de cela,
j'ai modifier, sur mon serveur (Debian Lenny), le fichier "charset" (/etc/apache2/conf.d):
=> AddDefaultCharset UTF-8
Hors ligne
Pages: 1