2010-02-10 2 views
0

Я пытаюсь сохранить символы UTF-8 с Zend_Cache (например, Ť, š и т. Д.), Но Zend_Cache запускает их и сохраняет их как Å, ¾ и другие странные символы.Задача Zend_Cache и UTF-8

Вот отрывок из моего кода, который сохраняет данные в кэш (символы UTF-8 перепутались только в Интернете, когда я пытаюсь его на моем компьютере, на локальном хосте работает нормально):

// cache the external data 
$data = array('nextRound' => $nextRound, 
       'nextMatches' => $nextMatches, 
       'leagueTable' => $leagueTable); 
$cache = Zend_Registry::get('cache'); 
$cache->save($data, 'externalData'); 

Перед тем, как сохранить кэшированные данные, я очистить его с HTMLPurifier и сделать некоторые синтаксический с DOM, что-то вроде этого:

// fetch the HTML from external server 
    $html = file_get_contents('http://www.example.com/test.html'); 

    // purify the HTML so we can load it with DOM 
    include BASE_PATH . '/library/My/htmlpurifier-4.0.0-standalone/HTMLPurifier.standalone.php'; 
    $config = HTMLPurifier_Config::createDefault(); 
    $config->set('HTML.Doctype', 'XHTML 1.0 Strict'); 
    $purifier = new HTMLPurifier($config); 
    $html = $purifier->purify($html); 

    $dom = new DOMDocument(); 
    // hack to preserver UTF-8 characters 
    $dom->loadHTML('<?xml encoding="UTF-8">' . $html); 
    $dom->preserveWhiteSpace = false; 

    // some parsing here 

Вот как я инициализировать Zend_Cache в загрузочном файле:

protected function _initCache() 
{ 
    $frontend= array('lifetime' => 7200, 
        'automatic_serialization' => true); 
    $backend= array('cache_dir' => 'cache'); 
    $this->cache = Zend_Cache::factory('core', 
             'File', 
             $frontend, 
             $backend); 
} 

Любые идеи? Он работает на localhost (где у меня есть поддержка иностранного языка, используемого в HTML), но не на сервере.

+0

Вы абсолютно уверены, что его не на то будет обработка очистителя meesing это? Что произойдет, если вы устраните эту часть процесса? – prodigitalson

+0

Я на 99% уверен. Я попытался исключить часть процесса HTMLPurifier, и проблема не устранена. –

+1

Опубликуйте свою конфигурацию mbstring в php.ini на localhost и сервере, пожалуйста, –

ответ

0

У меня была аналогичная проблема с развертыванием FPDF. Здесь символ html space & nbsp преобразовывался в тот же символ Å, что и вы здесь. Это было хорошо на моих локальных окнах, но не работало в моей Linux-серверной среде.

Попробуйте это:

$str = iconv('UTF-8', 'windows-1252', html_entity_decode($str));