Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Migracja strony z ISO-8859-2 do UTF-8, jak zmusić baze do działania w UTF-8?
mikerow99
post 28.05.2012, 18:14:47
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.
Go to the top of the page
+Quote Post
lucaa44
post 4.06.2012, 00:09:31
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


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 04:21