hagi0
26.11.2007, 00:30:00
Mam problem, otóż nie wyświetla mi polskich znaków przy pobieraniu danych z bazy. Kodowanie w bazie mam ustawione na latin2 (wybrałem przy instalacji).
W pliku index.php mam tak:
if(!($bz_link=mysql_connect("baza", "uzytkownik", "haslo")))
{
print("<br><br><center>Nie można połączyć się z bazą danych!</center><br>");
exit();
}
mysql_query("SET NAMES latin2");
(tutaj znajdują się dalsze instrukcje)
Kodowanie ustawione w nagłówku na stronie to:
<meta http-equiv="Content-type" content="text/html; char=iso-8859-2">
Mimo to nadal pojawiają się krzaki zamiast polskich liter jak pobieram dane z bazy.
W bazie mam polskie litery ale na stronie nie. Wie ktoś dlaczego tak jest i jak sobie z tym poradzić?
Seth
26.11.2007, 00:37:41
Sprawdz jaka masz ustawiona metode porywnywania znakow na kolumnie z tekstem.
hagi0
26.11.2007, 00:41:54
wpisując w konsoli mysql polecenie: show variables like 'collation%' pokazuje mi tabelke w której mam wszystkie zmienne ustawione na latin2_general_ci (dokładnie 3 zmienne: collation_connection, collation_database i collation_server), o to ci chodziło?
Seth
26.11.2007, 00:55:44
Jestem zbyt leniwy aby spamietac komendy mysqlowe

, dlatego podrzucam screen z phpMyAdmina, w ktorym wyrozniona jest sekcja "metoda porownywania napisow" dla wybranej kolumny w tabeli:

W przypadku gdy masz to ustawione inaczej nie uzyskasz wlasciwych znakow.
hagi0
26.11.2007, 01:44:55
to nie jest chyba wina porównywania napisów ponieważ stworzyłem nową bazę w konsoli mysql z opcjami default character set latin2 collation latin2_general_ci (oraz tabele do niej z tymi samymi opcjami) i dalej jest tak sam tz. w bazie ok a na stronie kicha...
jeszcze jedna (może przydatna) informacja otóż: wpisując w konsoli mysql polecenie show variables like 'character%' pokazuje sie tabelka, w której wszystkie pozycje mają wartość latin2 oprócz ostatniej, która ma utf8 (jest to zmienna character_set_system)..
NoiseMc
26.11.2007, 05:42:39
Jezeli wykonujesz wszystkie operacje z wiersza polecen moze poczytaj jeszcze to:
http://www.bluetwanger.de/blog/2006/11/20/...question-marks/w szczegolnosci zwroc uwage na "Which character set do you need for the command line?".
Dodatkowo sprawdz jeszcze to:
http://dev.mysql.com/doc/refman/5.0/en/cha...connection.html
hagi0
26.11.2007, 13:44:22
no posprawdzałem, ale dalej kicha, niby wydaje się że wszystko jest ok (wszystkie zmienne character_set w konsoli ustawione na latin2 tylko ostatni character_set_system na utf8, zmienne collation na latin2_general_ci, kodowanie na stronie ISO-8859-2, nawet spróbowałem przy tworzeniu baz i tabel dodawać opcje default character set latin2 i collation latin2_general_ci). Wszystko jednak na nic, w bazie dane ok, ale na stronie pytajniki i puste prostokąty (jak dodaje w skrypcie opcje mysql_query("SET CHARACTER SET latin2"); to pojawiają się jakieś krzaki). Pomóżcie ktoś.....
NoiseMc
26.11.2007, 14:28:42
Przy dodawaniu rekordow z konsoli sprobuj dac
SET NAMES latin2;
SET CHARACTER SET cp1250;
dlatego ze
Cytat
Upon arriving on the server, your data will be converted from CP1250 to ISO-8859-2. Results returned to you will be converted from ISO-8859-2 to CP1250.
.
Pamietaj ze wiersz polecen windows pracuje w CP1250.
hagi0
26.11.2007, 15:18:22
tak to jest problem z konsolą windowsa, bo jak przeinstalowałem mysql (w opcji wybrałem cp1250 zamiast latin2), i ustawiłem na stronie: <meta http-equiv="Content-type" content="text/html; charset=windows-1250"> a po połączeniu: mysql_query("set names cp1250"); i zacząłem dodawać dane z konsoli to w konsoli było dobrze a na stronie źle, natomiast jak stworzyłem w skrypcie PHP zapytanie, które wstawia do bazy wiersz (zawierający polskie znaki) to na stronie było wszystko ok (tz. były poprawnie widoczne polskie znaki), ale w bazie (przeglądanej w konsoli) pokazywało w tych dodanych wierszach ze strony krzaki zamiast polskich liter.
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.