Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-08-2009 15:13:21

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

[Résolu] La joie de l'encodage de caractère...

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

Code:

éééé
à à à Ã
èèèè
ôôôô
ùùùù

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 tongue)

Merciiii

Dernière modification par Asfaloth (21-08-2009 09:39:30)


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#2 20-08-2009 15:25:15

yvann
Membre
Date d'inscription: 24-07-2008
Messages: 81

Re: [Résolu] La joie de l'encodage de caractère...

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

 

#3 20-08-2009 15:37:41

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [Résolu] La joie de l'encodage de caractère...

En voilà une piste interressante, mais quand tu dis à l'instanciation de l'adapter, tu veux dire dans le bootstrap ?

donc juste après

Code:

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:

Code:

$db = Zend_Db::factory($config->db);
$db->query('SET NAMES UTF8');

mais le problème persiste, didjuuu  mad

et merci pourl'idée

Dernière modification par Asfaloth (20-08-2009 15:55:22)


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#4 20-08-2009 17:15:10

yvann
Membre
Date d'inscription: 24-07-2008
Messages: 81

Re: [Résolu] La joie de l'encodage de caractère...

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

 

#5 20-08-2009 18:48:21

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu] La joie de l'encodage de caractère...

Hello,

Si tu n'es pas avec PHP5.3 (car bug), tu as l'option charset dans la config.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 20-08-2009 22:48:23

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu] La joie de l'encodage de caractère...

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)


----
Gruiiik !

Hors ligne

 

#7 21-08-2009 09:38:47

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [Résolu] La joie de l'encodage de caractère...

D'abord merci à tous pour les réponses smile

@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  roll  Donc je sens que j'ai du nettoyage de base à faire  cool

@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 roll


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

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