Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Je viens vers vous avec un problème des plus banals et que l'ont rencontre tous assez fréquemment, j'ai nommé le machiavélique "Encodage de caractère" !!
Problème classique s'il en est, après un insert dans une base de donnée (Passage par Zend_Form) je me retrouve avec les classiques
éééé à à à à èèèè ôôôô ùùùù
Le problème est résolus en échappant les valeurs via un utf8_decode(). Moui mais non, ça me parait bizarre, mes pages sources sont en utf8, le site est déclaré en utf8 par les meta-tags, le charset dans le php.ini est définis en utf8, et l'encodage de la table incriminée est également en utf8...
Et pourtant, pour que les données soient stockées de manière correcte je dois les repasser en ISO.... J'en perd un peu mon latin sur ce coup là, si quelqu'un peut me dire ou est-ce que j'aurais pu oublier de mentionner que je travaille en utf8 (si jamais vous l'aviez pas encore compris )
Merciiii
Dernière modification par Asfaloth (21-08-2009 09:39:30)
Hors ligne
Et la transaction entre la BDD et ton application ?
A l'instanciation de ton adapter de connection, lance cette requête (avant toutes les autres) "SET NAMES UTF8" pour voir
Hors ligne
En voilà une piste interressante, mais quand tu dis à l'instanciation de l'adapter, tu veux dire dans le bootstrap ?
donc juste après
Zend_Db::factory($config->db);
En je fais ça comment ? un fetchAll avec ça comme code sql, j'avoue que j'ai un peu de mal à voir ou placer ce SET NAME
EDIT:
Ok bon j'ai fait comme ceci:
$db = Zend_Db::factory($config->db); $db->query('SET NAMES UTF8');
mais le problème persiste, didjuuu
et merci pourl'idée
Dernière modification par Asfaloth (20-08-2009 15:55:22)
Hors ligne
C'est ce que je fais (sous ton edit) et pour moi ça fonctionne, c'est régulièrement un oubli, mais si pour toi le résultat reste inchangé ... je ne vois plus.
Tu as bien supprimé le contenu injecté dans la base avant d'avoir ajouté cette requête spéciale ?
Hors ligne
Hello,
Si tu n'es pas avec PHP5.3 (car bug), tu as l'option charset dans la config.
A+
Hors ligne
Et ton serveur web, il envoit quel entête HTTP ??? Car, si ta base est en utf-8 (a priori oui puisque tu peux utilisé utf8_decode), alors c'est que ton affichage déconne..
Un AddDefaultCharset UTF-8 pourrait être utile dans ton apache (si tu utilises apache) (meme si c'est pas ca, ca mange pas de pain)
Hors ligne
D'abord merci à tous pour les réponses
@yvann:
En fait, le problème est là, je ne pars pas d'une base "vierge", donc pas trop moyen de faire un TRUNCATE sur la table incriminée. Bon par contre, ce matin avec les idées claires, ça fonctionne, mais effectivement ça fait un peu foiré tout les SELECT Donc je sens que j'ai du nettoyage de base à faire
@mikaelkael:
Je n'y suis pas, mais la migration est prévue dans pas longtemps, donc je m'en passerai pour le moment.
@nORKy:
le "AddDefaultCharset UTF-8" est une des premières choses que je fais lorsque j'install un nouveau serveur apache ^^
Merci à tous, je passe en résolu puisque maintenant c'est juste du nettoyage de base à faire avant de pouvoir utiliser le SET NAMES
PS: Par contre si vous connaissez un bon moyen pour un tel nettoyage je suis plus que preneur
Hors ligne
Pages: 1