我幾乎等同的狀態和你一樣,
開發機器是windows + PHP 5.3
開發機就是Linux + PHP 5.2.14
ZF版本是1.10
唯一我曾經的差異是:我曾經在引導類中添加mb_internal_encoding("UTF-8");
僅供參考,我用來緩存t ext(阿拉伯語言)從數據庫所有編碼UTF8 當我打開文件,我看到預期的阿拉伯文本。
UPDATE: 1 - 這裏是我的完整initCache功能只是爲了說清楚
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);
}
說明:比PHP 6早些時候 1-任何PHP版本不具備原生支持UTF8, https://stackoverflow.com/questions/716703/what-is-coming-in-php-6
2製作PHP 5.3或5.2處理UTF8通過使用ICONV或MB_STRING
只需使用var_dump(mb_internal_encoding());
你可以告訴使用ISO-8859-1內部在PHP,
您可以通過var_dump(mb_internal_encoding("UTF-8"));
它會輸出真(它的成功覆蓋重寫它內部編碼)
說實話我不知道有沒有更好的解決方案或者how bad it is ??,
如果您有任何更好,我會很樂意接受它:)萬一
更新2 你不想使用該功能, 打開此文件"Zend/Cache/Backend/File.php"
並轉到線976 更改此設置:
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;
}
是這樣的:
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;
}
我沒有てST手動,但它應該按預期工作
高興它幫助!
運行Zend框架的同一版本兩種環境? – Phil 2010-10-28 11:10:13
是的,所有代碼都是完全一樣的 - 包括使用的任何庫。 (ZF版本; 1.10.8) – Maurice 2010-10-28 11:22:49