Tworzenie tabel z kodowaniem utf-8 w symfony 1.4 i doctrine 1.2
W ramach odświeżenia swojej wiedzy, wróciłem do zabawy z frameworkiem Symfony. Realizując mały i prosty "projekt edukacyjny" natrafiłem na pewien problem. Mianowicie kodowanie tabel w MySQL oraz kodowanie połączenie z bazą danych. Osobiście preferuję używania wszędzie UTF-8 dlatego domyślne kodowanie latin1 nie do końca mnie zadowalało. Dzięki dziadkowi google znalazłem na sieci bardzo przydatne rozwiązanie.
Jeżeli chcesz używać kodowania UTF-8, powinieneś dodać do swojej definicji schematu (schema.yml) następujacy kod:
User:
options:
type: MyISAM
collate: utf8_unicode_ci
charset: utf8
columns:
username: string(255)
password: string(255)
Jak widać elegancko ustawiamy collate: utf8_unicode_ci oraz charset: utf8. Powyższe opcje sprawiają, że tylko jedna konkretna tabela będzie kodowana w UTF-8, jeżeli chcemy aby wszystkie table miały takie kodowanie oraz aby kodowanie połączenia było ustawione na UTF-8 musimy do pliku ProjectConfiguration.class.php dodać następującą metodę:
public function configureDoctrine(Doctrine_Manager $manager)
{
$manager->setCollate('utf8_unicode_ci');
$manager->setCharset('utf8');
}
Następnie trzeba przebudować cały mode (aby w bazie danych zmieniło się kodowanie tabel) oraz na nowo wgrać dane inicjalne już z odpowiednimi znaczkami.
symfony doctrine:build --all --and-load --env=dev --no-confirmation
Miejmy na uwadze, że tak komenda usunie wszystkie dotychczasowe tabele i stworzy je na nowo z kodowaniem UTF-8.
Tags: doctrine, mysql, symfony















