Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Krzaki w bazie zamiast polskich znaków
Forum PHP.pl > Forum > PHP > Frameworki
Sajrox
Witam,

Mam dziwny problem. Gdy zapisuje przez formularz jakieś dane to w pazie zamiast polskich znaków otrzymuje: ążęźćńłó

Jednak po zapisaniu danych na stronie te krzaki wyświetlają się poprawnie jako polskie znaki. Tylko w bazie danych jest taki bałagan.

Połaczenie z bazą realizuję w pliku .ini
  1. ;Database
  2. resources.db.adapter = "pdo_mysql"
  3. resources.db.params.host = "localhost"
  4. resources.db.params.username = "root"
  5. resources.db.params.password = ""
  6. resources.db.params.dbname = "baza1"
  7. resources.db.params.charset = "UTF8"
  8. resources.db.params.driver_options.1002 = "SET NAMES UTF8"
  9. resources.db.isDefaultTableAdapter = true
darko
To w czym problem questionmark.gif Znaki muszą zostać odpowiednio zakodowane w bazie, jeśli wyświetlają się poprawnie na stronach, to ok, nie przejmuj się tym, wszystko jest w jak najlepszym porządku.
Sajrox
Hehe, no tak tylko że skoro kodowanie bazy mam w UTF-8, połaczenie z bazą nawiązuje z kodowaniem UTF-8, to oczekiwałbym aby zapisywane dane były także w UTF-8.
Byłbym spokoniejszy gdybym dane w bazie posiadały polskie znaki smile.gif
Dopiero po aktualizacji ZF do najnowszej wersji oraz przebudowa Bootstrapa oraz szkieletu aplikacji, zaobserwowałem ten nietypowy problem :/
darko
Ja tu nie widzę żadnego problemu, po prostu tak jest i tyle. U mnie też w bazie wyświetlają się krzaczki i jakieś dziwactwa, ale nie zwracam na to uwagi, poza tym na stronach wszystko jest ok. Działa, to działa, widocznie tak ma być. Po co szukać sobie problemu na siłę, w dodatku tam, gdzie go nie ma questionmark.gif Wewnętrzne (i poprawne!) kodowanie danych w bazie tak właśnie wygląda, Zend Framework nie ma z tym nic wspólnego.
Sajrox
Przekonałeś mnie winksmiley.jpg
pc3t
Teoretycznie też na to nie zwracałem uwagi, ale pojawił się problem gdy musiałem posortować te krzaczki - mysql kompletnie sobie z tym nie radzi.
Wszystkie polskie litery, które w tym magicznym zapisie zaczynają się od ? są na początku.

To samo tyczy się innych funkcji mysql: lower itp

Ktoś wie jak to ugryźć?

///edit
poradziłem sobie, jakoś nie pomyślałem o tym, że Zend nie ustawia automatycznie
SET NAMES utf8 zaraz po połączeniu
teraz wszystko się poprawnie dodaje.
Czyli można zrobić tak:
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'baza',
'charset' => 'utf8'
));

albo w configu dopisać:
resources.db.params.charset = "utf8"
luki100011
Kiedyś tez tak miałem i problem zrobił się przy przenoszeniu bazy na inny serwer znaczki polskie diabli wzieli a konwerter nie potrafił tych dziwnych znaczków zamienić na polskie liter
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.