Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

Jak to zrobić?
Z PG ustanawiam połączenie poprzez:
$this->dbh = new PDO($c['dsn'], $c['username'], $c['password']);

W manualu znalazłem, że powinienem podać czwarty parametr z opcjami połączenia, ale nie udało mi się znaleźć opcji odpowiedzialnej za zmianę kodowania dla klienta.
Próbowałem również polecenia
$this->dbh->query("SET CLIENT_ENCODING LATIN2");

ale to nie pomogło.

konto usunięte

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

A próbowałeś w $c['dsn'] przekazać parametr ?

mysql:host=HOST;dbname=DB;charset=CHARSET

?

Jako charset podaj dowolne kodowanie np. UTF-8, LATIN2.
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

Użyłem DSNa:
pgsql:dbname=alden_cms;port=5432;host=xx.xx.xx.xx;charset=latin2

i uzyskałem wynik:
SQLSTATE[08006] [7] invalid connection option "charset"
Paweł Koralewski edytował(a) ten post dnia 17.01.11 o godzinie 16:45
Jarek W.

Jarek W. Software Engineer

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

Strzelam: SET CLIENT_ENCODING TO 'latin2'; (http://www.postgresql.org/docs/8.2/static/multibyte.html)

EDIT:
Jeszcze ewentualnie: SET NAMES 'latin2';Jarek W. edytował(a) ten post dnia 17.01.11 o godzinie 17:20

konto usunięte

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

Spróbuj tego

$this->dbh = new PDO($c['dsn'], $c['username'], $c['password']);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->query("SET NAMES latin2;");

no i tego co Jarek napisał też można. Faktycznie dość spora luka w dokumentacji ;).
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

Skorzystałem z dokumentacji
SHOW client_encoding;
i serwer ma ustawione kodowanie na latin2, jednakowoż na stronie pokazuje się krzak zamiast ż. Strona ma kodowanie utf8. Jak sprawdzam tabelę phpPgAdminem, to jest poprawnie ż, jednak tam jest kodowanie strony iso-8859-2. Czy zatem wszystkie otrzymane rekordy muszę przepuszczać przez funkcję dekodującą latin2 do utf8? Jak testowo zmieniłem kodowanie strony na latin2 to ż wyświetlało się prawidłowo.

konto usunięte

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

Jeśli na stronie masz utf8 to ustaw client_encoding na utf8. A jeśli chcesz używać wszędzie latin2 to przekonwertuj wszystkie pliki ze stroną na latin2 i zmień znacznik meta na latin2.
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: ustawienie kodowania latin2 dla postgresql przez PDO

No tak, działa. Wydawało mi się (teraz wiem, że nieprawidłowo), że kodowanie klienta (PDO) musi być takie samo jak bazy. Dzięki



Wyślij zaproszenie do