Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Błędne kodowanie podczas pobierania danych z bazy.
miniol
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


Mam problem z odczytaniem danych z bazy MySQL, a konkretnie z kodowaniem.

Oczywiście z samej bazie wszystkie polskie znaki wyświetlają się poprawnie.

System porównań dla połączenia MySQL (w phpmyadmin): utf8_general_ci
Metoda porównań napisów mojej bazy: utf8_general_ci
Metoda porównań napisów moich tabel: utf8_general_ci
Wszystkie pola tekstowe w mojej tabeli kodowane są również w utf8_general_ci

Mój plik php, który odczytuje dane z bazy jest w formacie UTF-8 bez BOM
W metadanych mam ustawione kodowanie: <meta http-equiv="content-type" content="text/html; charset=utf8" />

Mimo to wszystkie polskie znaki mi się wysypują. Zamiast polskich znaków, pojawiają się tylko znaki zapytania i ten dziwny kwadracik zamiast literki "ó".
Podejrzewam, że to problem z kodowaniem w bazie, ponieważ:
  1. //otrzymuję odpowiedź latin1.


Zmieniałem kodowania w bazie wszędzie gdzie tylko mogłem. Czy ktoś mi może powiedzieć w czym jest problem?

Na koniec dodam jeszcze, że wgrywając bazę użyłem takiej funkcji dla poprawnego kodowania:
  1. //poprawne kodowanie UTF-8
  2. mysql_query("SET CHARSET utf8");
  3. mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`");


Ten post edytował miniol 31.03.2011, 13:21:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
sakul55
post
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


a jak teraz dodasz cos do bazy i potem wyswietlisz to masz dobre kodowanie, czy zle? ja tak mialem wlasnie ze starymi
Go to the top of the page
+Quote Post
miniol
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


Właśnie dodałem nowy rekord i on również wyświetla się błędnie.
Go to the top of the page
+Quote Post
sakul55
post
Post #4





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


teraz zauwazylem tongue.gif

powinno byc utf8_polish_ci a ty masz utf8_general_ci
zmien sobie w phpmyadmin
Go to the top of the page
+Quote Post
miniol
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


Ale co konkretnie zmienić?

Zmieniłem:
System porównań dla połączenia MySQL (w phpmyadmin) na utf8_polish_ci
Metoda porównań napisów mojej bazy na utf8_polish_ci
Metoda porównań napisów mojej tabeli na utf8_polish_ci
Pole tekstowe w mojej tabeli też na utf8_polish_ci

I nadal nic ;/
Go to the top of the page
+Quote Post
sakul55
post
Post #6





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


a teraz jak dodajesz na nowo to znowu ten sam blad? bo starych pewnie czytac nie bedzie, ale nowe powinno
Go to the top of the page
+Quote Post
miniol
post
Post #7





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


Przy nowych rekordach nadal nic smile.gif

Wydaje mi się, że trzeba się skupić na tym, że mysql_client_encoding wywala mi wartość latin1, a powinien wywalić utf8.

Grzebałem teraz już nawet w konfiguracji mysql i znalazłem takie dwie linijki ciekawe:
character-set-server=latin2
default-character-set=latin2

Jednak nawet jeśli zmieniam latin2 na utf8 to nic to nie pomaga. Zmieniałem też na latin1, i oczywiście też żadnego efektu to nie przyniosło.
Go to the top of the page
+Quote Post
sakul55
post
Post #8





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 27.03.2011

Ostrzeżenie: (0%)
-----


ale Tobie i tak zwracalo latin1, a nie latin2.

sprobuj uzyc PDO http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO

Temat: MYSQL Polskie znaki




a moze szablon strony masz zly?
jak wpiszesz cos tak po prostu w html z polskimi znakami, albo przez echo to dziala?
Go to the top of the page
+Quote Post
Mackos
post
Post #9





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

Ostrzeżenie: (0%)
-----


Cytat(sakul55 @ 31.03.2011, 15:00:16 ) *
powinno byc utf8_polish_ci a ty masz utf8_general_ci

No nie do końca bo powinno być utf8_unicode_ci

dodatkowo w pliku łączenia się z bazą danych dodaj sobie
  1. mysql_query("SET NAMES 'utf8'");

zaraz po mysql_select_db
i sprawdź czy plik z baza jest w utf-8


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
miniol
post
Post #10





Grupa: Zarejestrowani
Postów: 84
Pomógł: 4
Dołączył: 25.03.2011

Ostrzeżenie: (0%)
-----


Cytat(Mackos @ 31.03.2011, 16:00:13 ) *
No nie do końca bo powinno być utf8_unicode_ci

dodatkowo w pliku łączenia się z bazą danych dodaj sobie
  1. mysql_query("SET NAMES 'utf8'");

zaraz po mysql_select_db
i sprawdź czy plik z baza jest w utf-8

Wstawiłem SET NAMES 'utf8' zaraz po mysql_select_db i wszystko działa pięknie smile.gif Wcześniej miałem tak, że najpierw pobierałem dane z bazy, potem wstawiłem SET NAMES 'utf8' a po tym dopiero wyświetlałem dane w przeglądarce. I to był oczywiście mój błąd ;]

Dzięki za pomoc. Temat do zamknięcia smile.gif
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 Aktualny czas: 21.08.2025 - 07:52