Zend_Cache Ve UTF-8 Sorunu

1 Cevap php

I (T, S vb gibi) Zend_Cache ile UTF-8 karakterleri kurtarmaya çalışıyorum ama Zend_Cache onları karıştırmasını ve Å olarak kaydeder, ¾ ve diğer garip karakterler edilir.

İşte önbellek (UTF-8 karakterler sadece çevrimiçi berbat edilir, ben localhost üzerinde benim PC'de çalıştığınızda Tamam çalışır) verileri kaydeder kodumu snippet'idir:

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

Ben önbelleğe alınan verileri kaydetmek önce, ben HTMLPurifier ile arındırmak ve DOM, böyle bir şey ile bazı ayrıştırma yapmak:

    // 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

İşte önyükleme dosyasında Zend_Cache başlatmak nasıl:

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

Herhangi bir fikir? Localhost üzerinde çalışır (ben HTML kullanılan yabancı dil desteği var) ama sunucu üzerinde.

1 Cevap

Ben bir FPDF dağıtım ile benzer bir sorun vardı. Burada, html boşluk karakteri & nbsp burada alıyoruz, aynı Å karaktere dönüştürüldü ediliyordu. Benim yerel windows iyiydi, ama benim linux sunucu ortamında işe yaramadı.

Bu deneyin:

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