[Symfony][Doctrine] Kodowanie LATIN2, Krzaki po pobraniu danych |
[Symfony][Doctrine] Kodowanie LATIN2, Krzaki po pobraniu danych |
2.02.2016, 12:37:12
Post
#1
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Mam problem z konfiguracją połączenia w Symfony2/Doctrine2 z bazą danych, która posiada kodowanie LATIN2. Niezależnie od tego, czy w konfiguracji połączenia podam:
charset: UTF8 czy charset: LATIN2 i tak pobiera się z krzakami, muszę jawnie zmienić kodowanie danych przez
Takie rozwiązanie mi nie odpowiada, ponieważ gdy zmieni się kodowanie bazy, to będę musiał zmieniać konfigurację + kod, a tego drugiego wolałbym nie musieć zmieniać. |
|
|
2.02.2016, 14:33:04
Post
#2
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
Może dlatego że pobierasz LATIN2 a strona jest wyświetlana w UTF8? Przekonwertuj bazę na UTF8 i po problemie.
-------------------- |
|
|
2.02.2016, 15:01:12
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Nie ma tam żadnej strony, aplikacja składa się z deamonów samych.
Cytat Przekonwertuj bazę na UTF8 i po problemie. Gdybym mógł, to bym nie pisał tego tematu. Nie jestem właścicielem tej bazy i nie mogę na niej nic zrobić. Miałem nadzieję, że Doctrine jakoś ładnie to obsługuje i dla bazy w LATIN2 mogę pobierać dane w UTF8. W google nic na ten temat nie znalazłem, ale mogłem coś przeoczyć. Możliwe, że w konfiguracji (config.yml) połączenia doctrine->baza się to gdzieś ustawia, ale nie mogę nic o tym znaleźć. http://www.postgresql.org/docs/9.4/static/multibyte.html - tutaj w sekcji "Table 22-2. Client/Server Character Set Conversions" jest napisane, że baza w LATIN2 może być obsługiwana przez klienta w UTF8 - pytanie jak tego dokonać, żeby polskie znaki się nie wykrzaczały (bo tylko w tym jest problem). Ten post edytował lukaskolista 2.02.2016, 15:06:25 |
|
|
2.02.2016, 15:14:59
Post
#4
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
Hm, może spróbuj w konfiguracji encji dopisać też odpowiednie opcje.
Kod /**
* @ORM\Table(options={"collate":"...", "charset":"..."}) * @ORM\Entity */ ... Ten post edytował redeemer 2.02.2016, 15:15:07 -------------------- |
|
|
2.02.2016, 15:32:11
Post
#5
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Próbowałem w adnotacji dać @ORM\Table(..., options={"charset":"UTF-8"}) i różne inne kombinacje nazwy kodowania, ale to nie pomaga.
|
|
|
2.02.2016, 15:45:30
Post
#6
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
No to nie wiem, nigdy się nie bawiłem innym kodowaniami niż UTF8 w doctrine(2), ale może zamiast ręcznie konwertować, to po prostu rozszerzyć doctrine o nowy typ np. latin2string? Coś podobnego do https://stackoverflow.com/questions/1911228...with-doctrine-2
Ten post edytował redeemer 2.02.2016, 15:45:42 -------------------- |
|
|
2.02.2016, 15:59:16
Post
#7
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
Jest to jakieś rozwiązanie - dzięki. Wolałbym rozwiązanie natywne, ale jak się nie da, to trzeba będzie stworzyć taki typ lub może jakoś rozszerzyć driver.
Edit: Wpadłem na pomysł dopisania do adnotacji encji i kolumny (domyslnie kolumna dziedziczyła by po tabeli) opcji convertCharset, która by konwertowała wartość na podstawie wskazanych kodowań, ale to jeszcze jest do przemyslenia. Ten post edytował lukaskolista 2.02.2016, 16:20:45 |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 21:13 |