bonjour,

je viens de me mettre au zf.

quelle est la bonne stratégie pour les charset ?

voici ma piste

config.ini
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
[global]
input.encoding            = ISO-8859-15 #par exemple
output.encoding            = ISO-8859-15 #par exemple
internal.encoding              = ISO-8859-15 #par exemple
 
...
[prod : global]
...
 
...
 
database.collation = utf8_swedish_ci
database.charset   = utf8
database.encoding = UTF-8
....
dans le bootstrap (index.php)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Zend_Registry::get("db")->getConnection()->exec("SET NAMES '".Zend_Registry::get("config")->database->charset."' COLLATE '".Zend_Registry::get("config")->database->collation."'");
donc il faut maintenant bien filtrer ce que je récupère de la base et ce que j'y met...

je pensais décliner une classe Zend_Db pour surcharger la fonction ->quote() et les fonctions de type ->fetch() et glisser des petits mb_convert_encoding() pour convertir entre work.charset et database.charset.

Ensuite utiliser $view->setEscape() pour indiquer une fonction qui utilise mb_convert_encoding() pour convertir vers output.charset. Ou bien décliner Zend_View pour surcharger escape() et ajouter 2 méthodes ->setWorkEncoding() et ->setOutputEncoding() (pour être plus esthétique).

est-ce la bonne stratégie ? l'idée est de pouvoir être très générique bien sûr

comment faites vous ?

EDIT :

et avec mbstring.encoding_translation quelqu'un a testé ? => pas bien

EDIT 2 :

j'ai sous-classer Zend_Db_Adapter_Pdo_Mysql

EDIT 3 :

en mysql le charset latin1 correspond à Windows-1252 en mbstring