Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z kodowaniem polskich znakow
Forum PHP.pl > Forum > Bazy danych
krolas
Witam.
Wiem ,że problem ten jest bardzo często opisywany tutaj na forum.Szukałem w róznych postach odpowiedzi ale nie pomogły mi one rozwiązać mojego problemu sad.gif
Kłopot tkwi w tym ,że zamiast polskich znaków w przeglądarce pojawiają mi się znaki zapytania w pobranych z bazy danych MySQL wyrazach.
Ustawiłem kodowanie na latin2 w pliku konfiguracyjnym my.ini (default-character-set=latin2) i tak samo w pliku php.ini (default_charset = "iso-8859-2").
W kodzie php próbowałem wykorzystać instrukcje SET NAMES i dalej lipa.
Mam za zadanie odczytac w przegladarce dane z tabeli Ksiazki w mojej bazie i wszystko jest ok, tylko te nieszczesne polskie znaki.
Proszę o wsparcie i z góry dzieki.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>
<body>
<?php
if (!$db_lnk =@mysql_connect("localhost","*****","*******")){
echo('Wystąpił błąd podczas połączenia z serwerem mysql...<br>');
exit;
}

if (!@mysql_select_db('test')){
echo('Wystapil blad podczas wyboru bazy danych: test<br>');
@mysql_close();
exit;
}
$query = "SET NAMES 'latin2'";
$query = "SELECT * FROM Ksiazki";

if (!$result = mysql_query($query, $db_lnk)){
echo('Wystapil blad: nieprawidlowe zapytanie...<br>');
@mysql_close();
exit;
}
?>

<table>
<tr>
<td>Id</td>
<td>Tytuł</td>
<td>Rok wydania</td>
<td>Cena</td>
</tr>

<?php
while($row = mysql_fetch_row($result)){
echo("<tr>");
echo("<td>$row[0]</td>");
echo("<td>$row[2]</td>");
echo("<td>$row[4]</td>");
echo("<td>$row[6]</td>");
echo("</tr>");
}
?>

</table>

<?php

if(!@mysql_close()){
echo('Wystapil blad podczaszamykania polaczenia z serwerem MySQL...<br>');
}
?>

</body>
</html>
Zbłąkany
Zmień kodowanie apache na iso-8859-2, albo w mysql ustaw metodę porównywania napisów na latin2_general_ci smile.gif .
P.S. Proszę o używanie odpowiedniego bbcode angrysmiley.gif .
krzysiekk
ja stosuje UTF-8 i prawie zawsze działa

  1. <meta http-equiv="Content-Type" content="text/html; CHARSET=UTF-8" />
cadavre
Ja także korzystam w UTF8 na bazach MyISAM.
Kodowanie bazy utf8, porównywanie utf8_general_ci, set names utf8 i meta charset utf8.
Wcześniej jednak korzystałem z właśnie latin2 i również działało poprawnie. Sprawdź dokładnie wykonanie SET NAMES. Spróbuj bez ''. :/

BTW
  1. <?php
  2. (...)
  3. $queryNames = "SET NAMES 'latin2'";
  4. mysql_query($queryNames); //query z set names nie wykonujesz!
  5. $query = "SELECT * FROM Ksiazki";
  6. if (!$result = mysql_query($query, $db_lnk)){
  7. echo('Wystapil blad: nieprawidlowe zapytanie...<br>');
  8. }
  9. (...)
  10. ?>
Tak wygląda kod? Bo jeśli tak to wykonuje query=SELECT a nie SET NAMES
krolas
Dzięki za wsparcie.Coś pokombinuje i może sie uda.W końcu dla chcącego nic trudnego snitch.gif

Wprowadziłem poprawkę w kodzie:

$queryNames = "SET NAMES 'latin2'";
mysql_query($queryNames);


i zadziałało biggrin.gif Wielkie dzięki mistrzowie!!!
SongoQ
Zawsze jak masz problemy z baza to sprawdzaj jak kodowanie ma klient, baza i jakie kodowanie ma fetch.
Domin
Czy ten problem masz na serwerze na własnym kompie czy już po wysłaniu na serwer wykupiony?questionmark.gif Bo ja też miałem kiedyś taki problem, i po przeróżnych próbach znalazłem powód... Problem leżał po stronie dostawcy serwera, na każdym innym które posiadam w innyuch firmach wszystko było dobrze. Niestety dostawca był an tyle nie doświadczony ze nie potrafił naprawić swojego kodowania. Dobrze to sprawdziłęm serwer na okresie próbnym.
cadavre
Cytat(krolas @ 3.08.2006, 22:12 ) *
Wprowadziłem poprawkę w kodzie:
$queryNames = "SET NAMES 'latin2'";
mysql_query($queryNames);

i zadziałało biggrin.gif Wielkie dzięki mistrzowie!!!
Po prostu zapomniałeś wykonać query dla zmiennej, którą ustawiłeś. smile.gif
krolas
Cytat(Domin @ 4.08.2006, 18:05 ) *
Czy ten problem masz na serwerze na własnym kompie czy już po wysłaniu na serwer wykupiony?questionmark.gif Bo ja też miałem kiedyś taki problem, i po przeróżnych próbach znalazłem powód... Problem leżał po stronie dostawcy serwera, na każdym innym które posiadam w innyuch firmach wszystko było dobrze. Niestety dostawca był an tyle nie doświadczony ze nie potrafił naprawić swojego kodowania. Dobrze to sprawdziłęm serwer na okresie próbnym.

Problem był na własnym kompie ale juz wszystko działa smile.gif
Lompi
a kto wie jak zmienić kodowanie w bazie danych moze jakis skrypt?
cadavre
W phpMyAdminie to w 5min zrobisz. Zaznaczasz checkboxy, jeden button i done.
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.