Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1 2
Aller modifier le code du ZF, même s'il est buggué, à mon avis c'est pas une bonne idée parce qu'après tu n'osera plus upgrader...
Par contre si tu veux que ton strtolower fonctionne comme un mb_strtolower, tu peux passer le paramètre mbstring.func_overload à 7 dans ta conf php.
Si tu bosses en UTF-8, tu devrais le faire systématiquement.
A+, Philippe
Hors ligne
Il aurai suffit de mettre
$this->view->setEscape('htmlentities');
Quelque part dans ton code
Hors ligne
peut tu me donner ta technique stp j'ai le même problème sur une la sortie d'une liste .
cordialement
Cédric
Hors ligne
moi je ne veux pas toucher a la conf de php
Hors ligne
Alors je ne peux pas vraiment t'aider...
Regarde comment faire pour que la vue utilise mb_strtolower et non strtolower (si tu as mb_string...). C'est la seule piste que je peux te fournir...
Hors ligne
Et si tu créer ton propre "Decorators" ? Cela ne règlera pas le bug ! Mais tu pourras ainsi gérer l'affichage de ton Form, passé pas Zend_Form !
sinon,
A l'époque j'utilisai Dreamweaver pour coder et quand je créais une page xhtml, il me la configurait comme étant ISO, malgré que l'header était en UTF-8 ! Il fallait que je face constamment une manipe, pour changer l'encodage de la page. ça peut, paraitre con, mais j'étais en plein dans l'allu ! Mon code était en sortie en UTF-8 de part la déclaration de l'entête, amis je comprenais vraiment pas d'ou venait le problème d'encodage, jusqu'au jour ou j'ai essayé de redéfinir l'encodage de la page, depuis l'IDE !
Je dis ça, je dis rien: Après tout, cela ne fait, que 4jours que j'étudie Zend :p
Hors ligne
Personnelement, dans mon bootstrap, j'ai un "iconv_set_encoding('internal_encoding', 'utf-8');" qui permet d'utiliser l'utf-8 pour les fonctions sur les chaines de caracteres.
J'utilise cette fonction car en regardant du côté d'un "Zend_Validate_StringLength::isValid", Zend utilise la fonction "iconv_strlen" pour connaitre la taille d'une chaine. J'ai donc présumé utilisé le bon parametre. Est-ce normal qu'avec "mb" ça fonctionne ? Je vais creuser le problème
Hors ligne
Si quelqu'un a trouvé la solution ... qu'il n'hésite pas à en faire part J'ai bien essayé l'overloading de mbstring.func mais ça ne fonctionne pas pour moi, ni combiné avec l'encoding forcé :
iconv_set_encoding('internal_encoding', 'utf-8');
ini_set('mbstring.func_overload', 7);
C'est assez chiant ce stringtolower qui ne fonctionne pas ... merci
Hors ligne
Bonjour,
prends la dernière version du package validate sur le svn.
Ça a résolu le problème chez moi.
ma conf pour mbstring :
attention aux lignes commentées
[mbstring] ; language for internal character representation. ;mbstring.language = Japanese mbstring.language = UTF-8 ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = UTF-8 ; http input encoding. ;mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function mbstring.http_output = ISO-8859-1 ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. ;mbstring.encoding_translation = Off ; automatic encoding detection order. ; auto means ;mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another ;mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ;mbstring.func_overload = 7
Hors ligne
Je remonte ce post pour signifier ma gratitude à Philippe, qui vient de me sauver après 3 jours de recherches et d'essais... Vraiment merci ! !
Hors ligne
Bonjour
Je suis désolé, il y a trop de post et je n'ai pas saisi la solution finale.
Si j'ai bien compris il faut faire ça :
philippe a écrit:
....tu peux passer le paramètre mbstring.func_overload à 7 dans ta conf php.
Si tu bosses en UTF-8, tu devrais le faire systématiquement.
Non?
Dernière modification par ziedb (19-08-2009 13:56:02)
Hors ligne
ziedb a écrit:
Bonjour
Je suis désolé, il y a trop de post et je n'ai pas saisi la solution finale.
Si j'ai bien compris il faut faire ça :philippe a écrit:
....tu peux passer le paramètre mbstring.func_overload à 7 dans ta conf php.
Si tu bosses en UTF-8, tu devrais le faire systématiquement.Non?
Oui tu as bien compris, c'est la solution si tu as accès à ton php.ini
Hors ligne
Si c'est ça je l'ai fais et j'ai obtenu ce message
Fatal error: String functions are overloaded by mbstring in C:\Program Files\wamp\www\jamidb\libraries\phputf8\utf8.php on line 39
Hors ligne
Désolé de ressortir les vieux sujets du grenier, mais j'ai le même problème que Mr.MoOx.
J'ai essayé de modifier mbstring.func_overload à 7 (qui est par défaut à 0) dans un .htaccess (je suis en mutualisé chez mes "amis" d'OVH) avec ce code :
php_value mbstring.func_overload 7
et là, c'est le drame... erreur 500 (youpi). Après de nombreuses recherches (http://guides.ovh.com/HtaccessAutre) il se trouve qu'ovh n'autorise pas 'php_value'. Super...
Y'a-t-il d'autres alternatives pour modifier la valeur de mbstring.func_overload ? Sachant qu'elle ne peut pas être modifiée avec un 'ini_set' (http://php.net/manual/fr/mbstring.configuration.php)
Merci d'avance
Hors ligne
Bonjour,
je suis en Version Zend Framework : 1.10.0, et je constate que le bug est toujours présent :
Le problème est dans le Constructor des Filter.
La solution: utiliser leur méthode setEncoding
Normalement :
$strToLowerFilter=new Zend_Filter_StringToUpper(array('encoding'=>'UTF-8'));
aussi bien que :
$strToLowerFilter=new Zend_Filter_StringToLower('UTF-8');
devrait marcher. Mais les 2 retournent :
Zend_Filter_Exception avec le message "The given encoding 'Array' is not supported by mbstring"
Depuis unZend_Form je fais
$strToLowerFilter=new Zend_Filter_StringToLower();
$strToLowerFilter->setEncoding('UTF-8');
$monElement->addFilter($strToLowerFilter)
Et là aucun problème pas besoin de toucher au php.ini ou autre... afin de "rustiner" le bug, qui à mon sens n'est pas plus conseillé que corriger soit meme le ZF !
Hors ligne
Pages: 1 2