sam mialem nieraz podobny problem, baza danych zle przeksztalcala mi polskie znaki mimo ustawien i zostawialem kodowanie na latin2, jedna z funkcji php nie zapisywala mi prawidlowo w utf-8 podczas przetwarzania danych, wiec odrazu przyznaje ze nie jestem specem w tym temacie,ale moze cos podpowiem
pierwsza sprawa - wielokrotnie mowi sie o tym ze kluczowe znaczenie ma dobry edytor taki ktory prawidlowo koduje w utf-8, zapisuje i przeksztalca do utf-8, sam mam taki problem, np coreeditor roznie sobie z tym radzi, wiec warto sprawdzic sam edytor
kolejna sprawa, z tego co napisales i co przyszlo mi do glowy, wyglada na to ze:
1) kodowanie plikow tekstowych(rozumiem ze .php tez) zmieniles prawidlowo na utf-8 i dzialaja dobrze bo przegladarka wyswietla je tak jak trzeba (sprawdz jeszcze w innej przegladarce)
2) co do bazy cos zle zostalo ustawione (zostalo bo moze to wina klienta sql o czym pisze nizej a nie Twoja), jak napisales nowe dane sa wyswietlane prawidlowo, a stare nie, wiec nowe sa zapisywane juz w formacie utf-8, a stare nadal zapisane w latin(lub innym), wiec wg mnie:
albo zle ustawiono kodowanie w mysql i trzeba uzyc innych ustawien samego kodowania,
albo ustawienia sa dobre ale trzeba by przekonwertowac cala zawartosc bazy danych na utf-8, po to by stare wpisy zostaly zapisane w utf-8, i to by wtedy wystarczylo, nie wiem jak to zrobic, moze jest taka funkcja w phpmyadmin, proponuje zajrzec do manual'a mysql, -->
mysql.comobstawialbym to drugie ale glowy nie daje
3) klient mysql - generalnie do phpmyadmin'a ciezko sie przyczepic, masa ludzi tego uzywa i poleca, ale..moze byc tak ze wersja phpmyadmin jest niekompatybilna z wersja mysql, tzn phpmyadmin ktore uzywasz wyszlo przed uzywana przez Ciebie wersja mysql i nie rozpoznaje lub blednie rozpoznaje nowsze ustawienia konfiguracyjne, i jednoczesnie zle je ustawia
proponuje poszukac i sprawdzic pole kompatybilnosci phpmyadmin z serwerem mysql, czy nie ma tam alert'u o braku kompatybilnosci, w razie koniecznosci zainstalowac najnowszego phpmyadmin, proponuje tez uzyc innego klienta mysql niz phpmyadmin, i tam zmienic kodowanie, lub uzyc do tego wiersza polecen
4) poza tym nie zmieniaj w przegladarce kodowania na ISO, jezeli chcesz miec utf-8, wymus takie kodowanie i tak pozostaw, zmieniaj jedynie pozostale ustawienia w tym kodowanie plikow i bazy danych, i testuj (generalnie ustawienie w przegladarce na domyslne kodowanie powinno dzialac, tzn przegladarka powinna wowczas odczytac plik z takim kodowaniem z jakim zostal on zapisany, strone HTML odczytac z takim kodowaniem jakie jest zawarte w znaczniku meta, dane z bazy danych z jej kodowaniem, dlatego takie ustawienie byloby najlepsze, po udanych testach proponuje zmienic na domyslne )
wyglada na to ze utf_8_global_ci jest dobrym kodowaniem bo nowe wpisy wyswietla bez krzaczkow, sprobuj jeszcze z utf_8_polish_ci...wydaje mi sie ze dane w bazie byly dotychczas zapisywane w tylu formatach ze zrobil sie balagan, przydaloby sie przekonwertowac cala zawartosc bazy na jeden typ kodowania
kombinuj;)
przejrzalem w miedzyczasie kilka stronek (szukales w google:>? ) i na poczatek polecam
Polskie-znaki-a-MySQLpo przeczytaniu tego artykulu mozesz dokladnie ustawic kodowanie w bazie danych korzystajac z wiersza polecen(zreszta Twoj wybor czego uzyjesz), po to zeby miec pewnosc ze ustawienia kodowania w samym mysql masz prawidlowe
jednak z tego co pisales i z tego co wyczytalem na roznych forach, wydaje mi sie ze ustawienia masz poprawne bo nowe rekordy wyswietlaja sie prawidlowo, wiec problem moze tkwic (jak obstawialem wczesniej) w samej tresci bazy, dlatego zajrzyj tu:
Konwersja bazy danych z ISO do UTF8 (dziwne znaczki)w skrocie:
- dokladnie ustaw kodowanie bazy danych na utf-8 korzystajac z
Polskie-znaki-a-MySQL- wyeksportuj cala zawartosc bazy danych do pliku (np korzystajac z phpmyadmin,
eksportuj baze)
- wczytaj ten plik do swojego edytora (albo np do notepad'a ++)
- przekonwertuj ten plik na utf-8, zapisz z kodowaniem utf-8
- zaimportuj przekonwertowany plik czyli zawartosc bazy danych (np korzystajac z phpmyadmin,
importuj baze)
- wyswietl zawartosc bazy w przegladarce(jak robiles wczesniej )
powino pomoc, daj znac czy zadzialalo