[PHP+MySQL] Polskie znaki na stronie

mam strone w PHP i wykorzystuje ona znacznie bazy danych MySQL. Strona normalnie wyświetla polskie znaki lecz wszystko co pochodzi z bazy danych nie ma polskich znaków. Na stronie (w plikach php) zmieniałem kodowania i to nic nie dało (mam windows-1250 na razie ustawione).

A szukałeś w ogóle odpowiedzi na swój problem? Takich tematów jest pełno.

Szukałem właśnie i znalazłem różne kodowania. Zmieniałem ale lipa.

Ustaw wszędzie utf8, odpowiednie nagłówki plików, pliki kodowane w utf8 bez boom np za pomocą notepad++, kodowanie w bazie utf8 , metoda porównywania napisów utf8_polish_ci, w php po połączeniu do bazy set_charset(“utf8”). Co i jak konkretnie pogooglaj, a się dowiesz.

No i kurde nadal lipa. W każdym pliku html/php ustawiłem to utf8, w bazie pozmieniałem na utf8 unicode ci, polich ci i inne. I nic. Pzreczytałem wiele for i żaden sposób mi nie zadziałał.

Do pracy używałem właśnie Notepad++

Tak jak pisze athei + dodaj do zapytań jeszcze coś takiego.

mysql_query('SET NAMES \'utf8\'');

np

require_once('./../mysql_connect.php');

$query = 'SELECT id, nazwa FROM `podstrony` WHERE dzial = "'.$_GET['dzial'].'" ORDER BY id';

mysql_query('SET NAMES \'utf8\'');

$result = @mysql_query($query);

i jeszcze jedno pokaż swój doctype może tam masz błąd

hmm wstawiłem to i nadal polskich znaków nie ma. teraz tylko zamiast ?? pojawiają się jakieś dziwne znaki itp…

Kod strony wygląda tak: http://wklej.org/id/76692/

Ustawiłem kodowanie Windows-1250 bo z każdym innym na stronie nie ma polskich znaków (nie licząc danych z bazy). Wszystko to co jest napisane w pliku PHP wyświetla się poprawnie lecz to co się wczytuje z bazy nie…

W bazie zmieniałem kodowanie ale to nic nie dało. Może źle coś robiłem…

Powiedz mi czy windows-1250 a utf8 to to samo? NIE! Wiec wywal windows i daj utf8 użyj notepad++ do konwersji (lub Gżegżółki jak niektórzy polecają). I szukaj w necie, a znajdziesz odpowiedź. Takim strzelaniem w ciemno daleko nie zajdziesz.

No utf-8 działa już. Mam polskie znaki. przestawiłem w notepadzie co neico. Ale dane z bazy nadal nie maja polskich znaków. Mimo że pozmieniałem wszystko na utf8 unicode ci a cała baza ma utf-8.

Nawet nową bazę zrobiłem z utf-8 unicode i dodałem to mysql_query(‘SET NAMES ‘utf8’’);

i zamiast tekstu Zażółć Gęślą Jaźń pojawia się Zażółć GęślÄ… Jaźń

A jak sprawdzasz w Phpmyadmin to są polskie znaki?

W PMA zaznacz bazę/operacje metoda porównywania napisów, to samo dla tabel. Dla poszczególnych pól - zmień i metoda porównywania napisów.

Albo w PMA zaznacz bazę, wybierz SQL i wpisz:

ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci;

ALTER TABLE `nazwa_tabeli` CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci;

ALTER TABLE `nazwa_tabeli` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci;

/Edit spakuj i wrzuć gdzieś kod .php gdzie masz łączenie się do bazy, oraz wyeksportuj bazę w PMA, bo takie zgadywanie już mi się znudziło.

Wpisałem to i nadal lipa. nadal to samo…

P.S. jak pzreglądam w phpmyadmin baze to tez nie ma polskich znaków…

P.S_2 jak w bazie ręcznie dodam rekord to są polskie znaki. ale jeżeli dodam go za pomocą skryptu PHP to nie.

Daj to po połączeniu się do bazy:

mysql_query("SET NAMES utf8");

mysql_query("SET CHARACTER SET utf8");

mysql_query("SET collation_connection = utf8_polish_ci");

Jeżeli dalej nie działa to patrz mój post wyżej.

Tak wygląda mój plik odpowiedzialny za dodawanie danych do bazy: http://wklej.org/id/76805/

Tak za odczytywanie: http://wklej.org/id/76692/ (już podawałem wcześniej).

W tym drugim jak to dodam to nic się nie zmienia. jak dodam to w tym odpowiedzialnym za dodawanie danych to cokolwiek bym wpisał żeby dodało to zawsze wyświetla tylko jeden znak : Å

W bazie też tylko się pojawia. Nie wiem może coś pokopane mam w tych plikach.

Kodowanie dalej windows, ten kod co powyżej dałem gdzie jest, wyparował? Widać nie chcesz sobie pomóc.

Jest utf8 tylko na wklej.org stary plik jest. To co kazałeś wstawić wstawiłem po:

mysql_connect ("localhost", "root", "") or 

        die ("Nie można połączyć się z MySQL");

      mysql_select_db ("cwphp") or 

        die ("Nie można połączyć się bazą cwphp");

       mysql_query('SET NAMES \'utf8\'');  

mysql_query("SET NAMES utf8");

mysql_query("SET CHARACTER SET utf8");

mysql_query("SET collation_connection = utf8_polish_ci");

W tym drugim pliku za dodawanie odpowiedzialnym to nie wiem jak to wkleić bo jak wkleje tak jak tu to źle działa. Do bazy dodaje tylko pierwszą literę i to w złym kodowaniu. Jak wpisze ŁŁŁŁŁŁŁŁŁŁ to doda tylko Å .