Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie polskich znaków (mysql-5.0.16-win32, apache_2.0.59-win32, PHP Version 5.1.6)
hagi0
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował hagi0 26.11.2007, 00:30:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Seth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Sprawdz jaka masz ustawiona metode porywnywania znakow na kolumnie z tekstem.
Go to the top of the page
+Quote Post
hagi0
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Seth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


Jestem zbyt leniwy aby spamietac komendy mysqlowe (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , dlatego podrzucam screen z phpMyAdmina, w ktorym wyrozniona jest sekcja "metoda porownywania napisow" dla wybranej kolumny w tabeli:

(IMG:http://webarchitect.pl/tmp/napisy.png)

W przypadku gdy masz to ustawione inaczej nie uzyskasz wlasciwych znakow.

Ten post edytował Seth 26.11.2007, 00:56:58
Go to the top of the page
+Quote Post
hagi0
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


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)..

Ten post edytował hagi0 26.11.2007, 02:39:27
Go to the top of the page
+Quote Post
NoiseMc
post
Post #6





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
hagi0
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


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ś.....

Ten post edytował hagi0 26.11.2007, 13:45:17
Go to the top of the page
+Quote Post
NoiseMc
post
Post #8





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
hagi0
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował hagi0 26.11.2007, 15:55:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 01:12