bonjour,
je viens de me mettre au zf.
quelle est la bonne stratégie pour les charset ?
voici ma piste
config.ini
dans le bootstrap (index.php)
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 ....
donc il faut maintenant bien filtrer ce que je récupère de la base et ce que j'y met...
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."'");
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
Partager