Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie polskich znaków (mysql-5.0.16-win32, apache_2.0.59-win32, PHP Version 5.1.6)
Forum PHP.pl > Forum > PHP
hagi0
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
Sprawdz jaka masz ustawiona metode porywnywania znakow na kolumnie z tekstem.
hagi0
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
Jestem zbyt leniwy aby spamietac komendy mysqlowe winksmiley.jpg , 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
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
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
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
Przy dodawaniu rekordow z konsoli sprobuj dac
  1. SET NAMES latin2;
  2. 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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.