Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z bazy czy skryptem
Forum PHP.pl > Forum > PHP
Domin
Cześć. Mam problem, polegajacy na tym, iż na CMS-ie własnej produkcji nie mogę zapisywać do bazy danych polskich znaków takich jak: ł,ą,ż, itp. Tylko zadziwiajace jest to że ten sam skrypt na serwerze innej firmy działa dobrze. Przez bazę danych (phpmyAdmin) mogę zapisać polskie znaki, ale już przez mój skrypt nie, gdyż wywala że zapisano, ale zamiast polskich znaków jest "?". Kodowanie strony oraz skryptu jest dobre, a nie działa jak powinien. Dodatkowo po jednokrotnym zrobieniu funkcji UPDATE danego rekordu nie można go już aktualizować. Co to moze być??

Czy problem moze polegać na funkcji "escape_data" któej uzywam do wyciągania i zapisywania danych z bazy.

Pomocy!!!
SongoQ
Sprawdz kodowanie w bazie. Bo chyba to bedzie przyczyna.
NoiseMc
Jeżeli jest to MySQL 4.1+ to jeżeli domyślne kodowanie bazy to Latin2, a strona jest w ISO-8859-2 to wszystko powinno być OK. Jeżeli cokolwiek jest inaczej niz powyżej za każdym wywołaniem skryptu po inicjalizacji połączenia z bazą powinieneś wykonywać następujące polecenia w bazie (w tym przypadku ustawienie kodowania na utf8, jeżeli używasz ISO-8859-2 to zamiast utf8 wpisujesz tam latin2) :

Przykład dla utf8
  1. SET NAMES 'utf8'
  2. SET CHARACTER SET utf8
  3. SET SESSION collation_connection ='utf8_bin'


Musisz też pamiętać aby w HTML - u w sekcji Meta wpisać odpowiednie kodowanie oraz wysłać do przeglądarki odpowiednie nagłowki.
Przykład dla utf-8:
  1. <?php
  2. header ( 'Content-Type: text/html; charset=utf-8' );
  3.  
  4. ?>


Pamiętaj również, aby w bazie ustawić odpowiedni system porównywania znaków (dla utf na przykład utf8_general_ci)
Domin
To jest coś z kodowaniem w tym moims krypcie, ponieważ sprawdzwiłem czy będzie dobrze jeśli do bazy danych wprowadzę prawidłowe dane ręcznie. I tak zrobiłem wprowadziłem ręcznie, uruchomiłem panela dministracyjny i tutaj pojawia się pytanie dlaczego zmiast poslich znaków są ? skoro w bazie danych jest wszystko dobrze, a kodowanie strony jest iso-8859-2.
mike
Na kodowanie skladają się dwie rzeczy:
1. Usawione kodowanie w <meta>
2. Kodowanie w jakim zapisano plik.
kurt
Brawo NoiseMc !
Bardzo dobry post. Męczyłem się z kodowaniem dwa dni i dopiero po przeczytaniu Twojego posta otwozryły mi się oczy, thx. Jednak nie zgodzę się co do domyślnego kodowania Mysql 4.1+ , według mnie jest to latin1.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.