Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [pdo / zend framework] Kodowanie polskich znaków
Forum PHP.pl > Forum > PHP > Frameworki
athabus
Witam, właśnie próbuję zgłębić ZendFramework i mam mały problem z kodowaniem polskich znaków.

Gdy odczytuję z bazy informacje normalnie poprzez mysqli->query wtedy polskie znaki działają ok. Oczywiście wcześniej ustalam kodowanie znaków używając set names uft8.

W przypadku gdy próbuję to samo zrobić za pomocą ZF (korzysta on z PDO) już polskich znaków nie ma. Mój kod to np:
  1. <?php
  2. $db = Zend_Db::factory('PDO_MYSQL', $params);
  3. $db->query('Set names utf8'); //bez tego są znaki zapytania z tym "utfowe" krzaki
  4. $result=$db->query('select * from klienci');
  5. $rows=$result->fetchAll();
  6. Zend::dump($rows);
  7. ?>


Czy należy jeszcze coś ustawić aby pojawiły się polskie znaczki?

(dodam, że sama strona korzysta również z kodowania utf8, a w bazie mam ustawione utf-8-polish-ci)

//edit
Wina leży gdzie indziej. Krzaczki pojawiają się tylko przy wywołaniu Zend::dump . Gdy wyświetlam atrybut normalnie to wszystko jest ok... dziwne
ARJ
przed zapytaniem musisz wywołać:
  1. <?php
  2. $db->query('SET NAMES utf8');
  3. $db->query('SET CHARACTER SET utf8');
  4. ?>
cyphelf
Metoda Zend::dump() używa funkcji htmlentities() bez trzeciego parametru oznaczającego kodowanie, więc zostaje użyte domyślne kodowanie serwera czyli najczęściej iso-8859-1, co jest powodem wyświetlania krzaczków.

Niedługo prawdopodobnie będzie możliwość ustawienia domyślnego kodowania w statycznej zmiennej klasy Zend, ale póki co możesz to rozwiązać dodająć trzeci parametr w wywołaniu htmlentities() (w Twoim przypadku 'utf-8').
athabus
Dzięki, to chyba faktycznie jest to.
Sabistik
Przenoszę. Temat dotyczy strikte ZF.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.