![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 16.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Kiedyś pisałem stronkę nie przejmując się kodowaniem. Pliki były zapisywane w ISO-8859-2. W bazie metody porównywania napisów w tabelkach były domyślne to było o ile pamiętam latin1_general_ci. W samych tabelkach też latin1_general_ci. Metoda porównywania całej bazy to było utf_8_polish_ci. I wszystko działało z tym, że w kodowaniu ISO. Kiedy włączałem stronę w Firefoxie to kodowanie się samo ustawiało na ISO-8859-2. Ale chciałem zmienić na kodowanie UTF-8. Otwieram zatem wszystkie pliki tekstowe i zmieniam je po kolei na UTF-8. Wszystkie elementy bazy danych zmieniłem na utf_8_global_ci. Kiedy włączam strone w Firefoxie to domyślnie startuje z kodowaniem ISO. Zmieniam ręcznie w FF na kodowanie UTF-8 i treść z plików .php jest widoczna, nie ma krzaczków. Gorzej z treściami z bazy danych. Gdy mam kodowanie UTF-8 to krzaczki są w treściach z bazy danych, gdy ISO - w treściach z plików. Jak sprawić, żeby treść całości (i bazy i plików) była w UTF-8? Jeszcze od czasu kiedy zmieniłem kodowanie w bazie to po dodaniu nowych danych do bazy, te dane są widoczne bez krzaczków, a stare z. Co ustawić w bazie danych? Czy utf_8_global_ci jest złą metodą porównywanai napisów? O co w ogóle chodzi z tą "metodą porównywania napisów"? Co to jest? Czy to w ogóle jest odpowiedzialne za kodowanie? Wszystkie operacje związane ze zmianą metod w bazie danych robiłem za pomocą phpMyAdmin bez wpisywania żadnych komend z MySQL. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 26.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
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.com obstawialbym 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-MySQL po 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 04:21 |