Grzegorz S.

Grzegorz S. PHP developer & IT
trainer

Temat: polskie znaczki

Witam
Czy spotkaliście się podczas z tworzenia projektów zf z koniecznością ustawiania kodowania utf-8 w konfiguracji bazy:

resources.db.params.driver_options.1002 = "SET NAMES UTF8;"

Do tej pory myślałem, że jestem w raju i nie jest to konieczne ale przeprowadzka na nowy serwer doprowadziła do zmiany myślenia.

Kilku znajomych programistów twierdzi, że projekty zf działają dobrze, bez ustawiania tej opcji.

W takim razie moje pytanie brzmi: czego nie mam ustawionego na serwerze, że muszę w opcjach projektu zf to wymuszać i gdzie to znaleźć.

Będę bardzo wdzięczny za pomoc w tej kwestii.

P.S. Gdzie znaleźć opis tego parametru: resources.db.params.driver_options.1002 = "SET NAMES UTF8;"
Próbowałem w manualu i api ale coś nie mogę znaleźć...

konto usunięte

Temat: polskie znaczki

Nie nie jest żaden dodatkowy parametr ZF. Wnioskuje że korzystasz z MySQL. Tak naprawdę po połączeniu z bazą danych, wysyłane jest query które zmienia domyślne kodowanie klienta z latin1 na utf8.

"In that case, even if you enter valid utf8 values, the client interpretes the values as latin1. Then tell the server 'Hey, these values are encoded in latin1'. When the values are stored in the table, MySQL thinks 'Oh, the values passed from the client is latin1 but the table is utf8. I have to convert it!' That's why the values becomes non-utf8.

By executing "set names utf8", it sets the client character set variables to utf8. So the values sent from the client program are stored 'as is' in the table because the client character set and the table's character set is the same."

Pozdrawiam
Marcin.Marcin Baran edytował(a) ten post dnia 12.08.09 o godzinie 11:41
Grzegorz S.

Grzegorz S. PHP developer & IT
trainer

Temat: polskie znaczki

Czyli gdzieś jest ustawiony latin1?
Gdzie to na debianie znaleźć?

konto usunięte

Temat: polskie znaczki

Grzegorz Szczotka:
Czyli gdzieś jest ustawiony latin1?
Gdzie to na debianie znaleźć?

Czytaj uważnie: nie ZF, nie Debian (ani inny system) tylko MySQL
Najprawdopodobnie przy przeprowadzce ustawiłeś nie takie kodowanie bazy jak trzeba...

ja problemy z kodowaniem załatwiam tak:

$config = new Zend_Config_Ini(APPLICATION_PATH . '/config/config.ini', APPLICATION_ENVIRONMENT);
self::$dbAdapter = Zend_Db::factory($config->database);
self::$dbAdapter->query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
Grzegorz S.

Grzegorz S. PHP developer & IT
trainer

Temat: polskie znaczki

MySQLa mam przecież na debianie...;)
Widzę w zmiennych systemowych mysqla wiele kodowań innych od utf8 i nie wiem jak się do nich dostać...

konto usunięte

Temat: polskie znaczki

database.params.driver_options.1002 = "SET NAMES utf8"

1002 to tak naprawde - PDO::MYSQL_ATTR_INIT_COMMAND
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

konto usunięte

Temat: polskie znaczki

Ten sam problem - to samo rozwiązanie co Piotrek. Proste i działa.
Piotr Rybałtowski

Piotr Rybałtowski Programista PHP,
Symfony, Zend
Expressive, Node.js

Temat: polskie znaczki

W 1.9.3 mam wpisane w configu resources.db.params.charset = "UTF8" i polskie znaczki śmigają. A precyzyjniej chodzi o parametr charset podawany tak samo jak host, username i password przy tworzeniu adaptera bazy.
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: polskie znaczki

jeżeli masz ustawione kodowanie latin1, to daj sobie spokój z set namesami/set charsetami itp - tylko, jeżeli jest taka możliwość, zmien odrazu kodowanie w bazie. Dojdzie do tego, że będziesz musiał wszędzie robić iconvy ;)

Następna dyskusja:

PDF polskie fonty - HELP !




Wyślij zaproszenie do