J'ai presque état identique comme vous,
machine de développement
est windows + php 5.3
machine de développement
est Linux + PHP 5.2.14
Version ZF est 1.10
le seul différence que j'avais était: je l'habitude d'ajouter mb_internal_encoding("UTF-8");
dans la classe bootstrap
FYI, je l'habitude de cache t ext (langue arabe) de la base de données tous codés UTF8 quand j'ouvre le fichier je vois le texte arabe comme prévu.
MISE À JOUR: 1 ici est ma fonction complète initCache juste pour préciser
public function _initCache() {
mb_internal_encoding("UTF-8");
$frontendOptions = array(
'automatic_serialization' => TRUE,
'lifetime' => 86400
);
$backendOptions = array(
'cache_dir' => APPLICATION_PATH . "/configs/cache/",
///'cache_dir' => sys_get_temp_dir(),
);
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
Zend_Registry::set("cache", $cache);
}
Explication: 1 Toute version php plus tôt que PHP 6 ne pas prise en charge native UTF8, https://stackoverflow.com/questions/716703/what-is-coming-in-php-6
2-faire php 5.3 ou 5.2 accord avec UTF8 en utilisant ICONV ou MB_STRING
simplement en utilisant var_dump(mb_internal_encoding());
vous pouvez dire que PHP en utilisant ISO-8859-1 interne,
vous pouvez la remplacer par var_dump(mb_internal_encoding("UTF-8"));
il serait sortie vrai (il succès à la dérogation l'encodage interne)
pour être honnête je ne sais pas s'il y a une meilleure solution ou how bad it is ??,
si vous aviez mieux je serais heureux de l'adopter :)
MISE À JOUR 2 dans le cas où vous ne voulez pas utiliser cette fonction, ouvrir ce fichier "Zend/Cache/Backend/File.php"
et aller à la ligne 976 changer ceci:
protected function _filePutContents($file, $string)
{
$result = false;
$f = @fopen($file, 'ab+');
if ($f) {
if ($this->_options['file_locking']) @flock($f, LOCK_EX);
fseek($f, 0);
ftruncate($f, 0);
$tmp = @fwrite($f, $string);
if (!($tmp === FALSE)) {
$result = true;
}
@fclose($f);
}
@chmod($file, $this->_options['cache_file_umask']);
return $result;
}
être le suivant:
protected function _filePutContents($file, $string)
{
$string = mb_convert_encoding($string , "UTF-8" , "ISO-8859-1"); // i didn't test it , use it at your own risk and i'd rather stick with the first solution
$result = false;
$f = @fopen($file, 'ab+');
if ($f) {
if ($this->_options['file_locking']) @flock($f, LOCK_EX);
fseek($f, 0);
ftruncate($f, 0);
$tmp = @fwrite($f, $string);
if (!($tmp === FALSE)) {
$result = true;
}
@fclose($f);
}
@chmod($file, $this->_options['cache_file_umask']);
return $result;
}
je ne l'ai pas Té st manuellement, mais il devrait fonctionner comme prévu
Glad it helps!
Les deux environnements exécutent-ils la même version de Zend Framework? – Phil
oui, tout le code est exactement le même - y compris les bibliothèques utilisées. (Version ZF; 1.10.8) – Maurice