CooN [ Generaďż˝ ]
Do uzytkownikow MySQL i PHP: wyswietlanie polskich znakow
Uzywam MySQL w wersji 4.1.7, czyli w miare nowej.
PHP w wersji 4.
Kod pisze w Macromedia Dreamweaver MX 2004.
We wszystkich powyzszych programach, kodowanie znakow ustawilem na latin2, czyli inaczej ISO-8859-2. I prawie jest ok. Prawie, bo mimo iz polskie znaki wyswietlane sa w konsoli mysql, Dreamweaver koduje strony rowniez prawidlowo, jednak problem powstaje gdy trzeba dane pobrac z bazy i wyswietlic na stronie (akurat w formularzu na liscie). Wtedy polskie znaczki zastepowane sa popularnymi krzkami.
Pytanie, to oczywiscie jak to rozwiazac.
Przypuszczam, ze Dreamweaver nie ma tu znaczenia, glowne podejrzenie pada na MySQL, w ktorym zauwazylem rzecz dziwna, a nastepujaca:
zmienne uzywane przez baze, wyswietlane poleceniem SHOW VARIABLES; w pewnym momencie pokazuja
character_set_client: latin1
character_set_connection: latin1
character_set_database: latin2
character_set_results: latin1
character_set_server: latin2
character_set_system: utf8
collation_connection: latin1_swedish_ci
collation_database: latin2_general_ci
collation_server: latin2_general_ci
To sa akurat zmienne, ktore powstaly na skutek wpisania do pliku konfiguracyjnego my.ini nastepujacych linijek:
[mysqld]
default-character-set=latin2
default-collation=latin2_general_ci
Dlaczego reszta zmiennych pozostaje latin1?
character_set_system akurat jest zawsze utf8 jak sie doczytalem w manualu, wiec ok, niech bedzie (zreszta, kodowanie utf8 tez powinno byc dobre dla polskich znakow).
Dodalem jeszcze:
[mysql]
default-character-set=latin2
default-collation=latin2_general_ci
ale to akurat niczego nie zmienia (a przypuszczam, ze powinno). Zmienne dalej sa takie, jak te powyzej.
fanlegii79 [ Konsul ]
Kiedys mialem podobny poroblem, podczas polaczenia wysylalem chyba najpierw SET character_set_results="latin2" przed wlasciwym zapytaniem.
CooN [ Generaďż˝ ]
Jeszcze ciekawostka.
Rezultaty z polskimi znakami wyswietlane w konsoli mysql, w wersji jakiej uzywam, sa poprawne tylko dla kodowania latin1. W zadnym razie nie dziala dobrze utf8 i latin2...
Czyzby tworcy mysql uznali, ze skoro polska juz w unii, to i zachodnie kodowanie tez dla nas dobre ;)