Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]Nieporządana zmiana charsetu i collation przez Symfony
SnakeEater
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Witam,
Mam taki popularny problem, że przeglądarka wyświetla mi źle polskie znaki. W settings.yml ustawiłem UTF-8. W templacie ustawiłem xml-lang oraz lang na pl, a charset na utf-8. Mimo to polskie znaki są źle wyświetlane. Zastosowałem pewną sztuczkę, która naprawia problem:
1. Usunąłem wszystkie tabele z bazy, zmieniłem charset dla mojej bazy poprzez ALTER ... oraz collation odpowiednio na utf8 i utf8_polish_ci.
2. Przekopiowałem schema sql do klienta mysql i w ten sposób stworzyłem tabele. Tabele odziedziczyły collation z ustawień dla bazy.
3. Wklepałem doctrine:data-load.
Wszystko po takiej operacji działa perfect smile.gif
W momencie jednak gdy zrobię build-all --and-load wszystko wraca do poprzedniego stanu. Charset i collation dla bazy jak i samych tabel ustawiają się na domyślny dla bazy czyli jakiś latin1 swedish. Da się coś zrobić żeby Symfony używało utf-8?

Częściowo rozwiązałem problem
Dodałem w settings.yml
Kod
attributes:
  default_table_charset: utf8
  default_table_collate: utf8_general_ci

Mimo tego po każdym wykonaniu doctrine:build-all --and-load ustawienia dla bazy danych zmieniają się na domyślne dla całego systemu mysql. Sprawdzam to w INFORMATION_SCHEMA/TABLES. W sumie sprawa jest załatwiona, ale nie wiem czy dobrze ustawiać kodowanie settings.yml. Czy nie lepiej gdyby Symfony korzystało z ustawień dla bazy? Jeżeli utf8_general_ci pasuje dla innych języków? Co jeżeli jakiś Czech zechce zainstalować moje oprogramowanie? Czy nie bedzie musiał zmieniać ustawień w settings.yml?

Ten post edytował SnakeEater 14.03.2010, 00:23:12
Go to the top of the page
+Quote Post
bikerszymek
post
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


dodaj na poczatku schema.yml

CODE
options:
type: INNODB
collate: utf8_general_ci
charset: utf8


Ten post edytował bikerszymek 14.03.2010, 15:00:10
Go to the top of the page
+Quote Post
SnakeEater
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Dodałem na początku schema.yml no i:
Kod
Failing Query: "CREATE TABLE collate (id BIGINT AUTO_INCREMENT, PRIMARY KEY(id)) ENGINE = INNODB"

(Symfony 1.4)

Działa perfect. Dzięki. Mój błąd był taki, że zostały pliki modelów stworzone wcześniej bo nie dodałem spacji w yaml. Czy jest zatem jakaś opcja, żeby usunęło wszystkie pliki z doctrine/base zanim stworzy nowe?

Ten post edytował SnakeEater 14.03.2010, 16:52:41
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Usunąć pliki modelów/filtrów/formularzy niezdefiniowanych w schema.yml możesz przy użyciu:
Kod
$ ./symfony doctrine:clean
Go to the top of the page
+Quote Post
SnakeEater
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Thank You.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 00:02