Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Doctrine] Kodowanie LATIN2, Krzaki po pobraniu danych
lukaskolista
post 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
  1. $columnValue = iconv('latin2', 'UTF-8', $entity->getColumnValue());

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ć.
Go to the top of the page
+Quote Post
redeemer
post 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.


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 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
Go to the top of the page
+Quote Post
redeemer
post 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


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 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.
Go to the top of the page
+Quote Post
redeemer
post 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


--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 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
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 10:27