[MySQL] Problem z polskimi znakami

0

Hej!
Mam problem z wyświetlaniem polskich znaków w Bazie danych.
PHPMyAdmin jest ustawiony tak :
-System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
-System porównań dla połączenia MySQL: utf8_polish_ci
W pliku PHP który obsługuje baze danych (formularze) jest <meta http-equiv="content-type" content="text/html; charset=utf-8">
więc niby też ok.

W momencie np dodania rekordu do bazy danych z poziomu własnego formularza polskie znaki są.... Natomiast jeśli dodam rekord w PHPMyAdmin to polskie znaki są tylko w PHP MyAdmin, a jak przeglądam baze z własnego formularza są krzaczki... I vice versa...
Czyżby dodawanie PHPMyAdmin kodował innym utfem niż ręczne dodanie z poziomu kodu?

0

Po polaczeniu z baza wykonaj jeszcze

set names utf8
0
johny_bravo napisał(a)

Po polaczeniu z baza wykonaj jeszcze

set names utf8

Niestety nic to nie daje :/ Zamiast krzaczków są teraz znaki zapytania przy przeglądaniu z poziomu formularza....

0

a ustawiłeś kodowanie dokumentu, w którym są wyświetlane dane z bazy na utf-8?

0
thecoder napisał(a)

a ustawiłeś kodowanie dokumentu, w którym są wyświetlane dane z bazy na utf-8?

Tak ustawiłem...
W Notepad ++ jest jeszcze ustawione FORMAT->Koduj w UTF-8

0

nie wiem, a spróbuj może: SET CHARSET utf8 ?

0
Coldpeer napisał(a)

nie wiem, a spróbuj może: SET CHARSET utf8 ?

Ehhh próbowałem tak... Są tylko inne krzaczki :-( :-/

0

ja próbowałem takiego zestawu:

		$c = "utf8";
		mysql_query('SET character_set_client = '.$c);
		mysql_query('SET character_set_results = '.$c); 
		mysql_query('SET character_set_connection = '.$c); 
		mysql_query('SET default_charset = '.$c);
		mysql_query('SET NAMES '.$c);
		mysql_query('SET SET CHARACTER SET '.$c);
		mysql_query('charset '.$c);
		var_dump(mysql_client_encoding());
		//do .htaccess: "AddDefaultCharset UTF-8"

NIC nie pomogło, cp uparcie ustawione na latin2, zero reakcji w kontakcie z bazą

więc skorzystałem z własnej funkcji do zmiany kodowania:
http://pastebin.4programmers.net/2733

przed zapisem konwersja do iso-8859-2, przed wyświetleniem konwersja całej strony do utf8 - ob_start() etc. Problemy się skończyły

0

Dziwne... Ustawiłem
mysql_query('SET NAMES utf8');

a jak sprawdzam jaki jest zestaw znaków :

$charset = mysql_client_encoding($link);

echo "Obecny zestaw znaków to : $charset\n";

to wyskakuje LATIN1...
Jakiś błąd w phpMyAdmin ???

0

Znalazłem rozwiązanie :


	        $c = "utf8";
                mysql_query('SET character_set_client = '.$c);
                mysql_query('SET character_set_results = '.$c);
                mysql_query('SET character_set_connection = '.$c);
                mysql_query('SET default_charset = '.$c);
				
				mysql_query('SET character_set_database = '.$c);
                mysql_query('SET character_set_server =  '.$c);
				mysql_query('SET character_set_system =  '.$c);
				mysql_query('SET collation_database =  '.$c);
				mysql_query('SET collation server = '.$c);;
				
				mysql_query('SET NAMES '.$c);
                mysql_query('SET SET CHARACTER SET '.$c);
                mysql_query('charset '.$c);
				mysql_query('SET character_set_connection=utf8_polish_ci');
				mysql_query('SET character_set_client=utf8_polish_ci');
				mysql_query('SET character_set_results=utf8_polish_ci');
				mysql_query(' SET NAMES utf8 ');
                var_dump(mysql_client_encoding());

Teraz wyświetla dobrze polskie znaczki na formularzu i w bazie. Jedynie co mnie zastanawia to... że pokazuje Obecny zestaw znaków to : latin1 string(6) "latin1"

1 użytkowników online, w tym zalogowanych: 0, gości: 1