Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je suis actuellement en plein développement d'un site internet pour lequel j'utilise PostgreSQL en base de données.
J'essaie donc d'ajouter dans entrées à ma table comme ceci :
$newBug = $tableBuglist->createRow(); // .... // Champs $newBug->deposed_at = time(); $newBug->subject = $form->getValue('subject'); $newBug->description = $form->getValue('description'); $newBug->state_id = 1; $newBug->category_id = $form->getValue('category_id'); // Sauver $newBug->save();
Tout fonctionne bien quand je n'utilise pas de caractères spéciaux mais dès que j'utilise des accents, par exemple, ZF me retourne cette erreur :
Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[22021]: Character not in repertoire: 7 ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe92027 HINT: Cette erreur peut aussi survenir si la séquence d'octets ne correspond pas au jeu de caractères attendu par le serveur, le jeu étant contrôlé par « client_encoding ».' in /usr/share/ZendFramework/Zend/Db/Statement/Pdo.php:238 Stack trace: #0 /usr/share/ZendFramework/Zend/Db/Statement.php(283): Zend_Db_Statement_Pdo->_execute(Array) #1 /usr/share/ZendFramework/Zend/Db/Adapter/Abstract.php(430): Zend_Db_Statement->execute(Array) #2 /usr/share/ZendFramework/Zend/Db/Adapter/Pdo/Abstract.php(220): Zend_Db_Adapter_Abstract->query('INSERT INTO "bu...', Array) #3 /usr/share/ZendFramework/Zend/Db/Adapter/Abstract.php(508): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO "bu...', Array) #4 /usr/share/ZendFramework/Zend/Db/Table/Abstract.php(815): Zend_Db_Adapter_Abstract->insert('bugtracker_list', Array) #5 /usr/share/Zen in /usr/share/ZendFramework/Zend/Db/Statement/Pdo.php on line 238
J'ai vérifié l'encodage de mes fichiers et de mon serveur tout est en UTF 8.
Je suis donc perdu ... j'espère que vous pourrez m'aider !!
Merci d'avance.
Lermit
Dernière modification par lermit (09-03-2009 18:07:49)
Hors ligne
Je n'utilise pas PostgreSQL, mais pour MySQL. Pour ne pas avoir de soucis, il faut mettre:
$db->query("SET NAMES 'utf8'");
où $db est la base de données (je le fais dès l'initialisation de la BDD).
C'est peut-être la même chose avec PostgreSQL...
Dernière modification par neni (10-03-2009 17:16:56)
Hors ligne
Bonjour neni,
Tout d'abord merci pour ta réponse !!!
J'ai, comme proposé, essayé de spécifier l'encodage client mais ceci ne change rien.
Merci quand même pour la réponse et si quelqu'un à une autre solution je suis preneur, je continu les recherches de mon côté et si j'ai des éléments de réponse je vous en ferait part !!
Hors ligne
J'ai regardé sur le net ce que je trouvais là dessus car j'aurai certainement le même soucis un jour...
Il y a bien cela qui pourrait donner une piste (ou temporairement dépanner):
http://www.developpez.net/forums/d61100 … e-serveur/
ou essayer cela:
pg_set_client_encoding( $database_connection, 'UTF8' );
ou en requete
SET CLIENT_ENCODING TO 'UTF8';
Dernière modification par neni (11-03-2009 08:15:49)
Hors ligne
Hello,
L'une des plus vieilles issues de l'IT : http://framework.zend.com/issues/browse/ZF-1541
Sur le papier, c'est normalement corrigé pour la 1.8.
A+
Hors ligne
Bonjour à tous,
j'ai regarder tout vos liens qui sont très intéressants et j'avance.
En effet j'ai appliqué le patch proposé par Zend mais ceci n'as rien changé mais en creusant un peu j'ai découvert une quelque chose :
Les fichier du ZF sont encodés en 'us-ascii'.
Je vais donc essayer de convertir tout ça en UTF 8 et reviendrai vous donnez des nouvelles
Merci à tous pour vos réponses.
Romain
[Edit]
J'ai réussis à ajouter mes accents en utilisant la fonction utf8_encode de php mais quand je les affiche j'ai un magnifique é. Si quelqu'un sais pourquoi ?
Dernière modification par lermit (12-03-2009 14:06:00)
Hors ligne