ďťż
 
 
   apache, mysql - brak polskich znaków odczytywanych z db
 
 

Tematy

 
    
 

 

 

 

apache, mysql - brak polskich znaków odczytywanych z db





matyskiewicz - 17-11-2008 15:34
Witam,
Zainstalowałem Debiana, apache, mysql, phpmyadmin, a następnie zrobiłem prostą stronę testową.
Strona nie wyświetla polskich znaków wczytywanych z bazy danych. Dla testu wykonałem: <?php
...
echo 'ąćńłóżźć';
echo $row['test']; //wartość zmiennej ąćńłóżźć
...
?> po odpaleniu skryptu w przeglądarce
Czyli jak widać apache koduje według ustawień w edytorze, php.ini itp UTF-8 bez BOM
Natomiast baza danych generuje błędy.
Pójdźmy dalej: rekord test został wygenerowany za pomocą phpmyadmin, w którym domyślne kodowanie to utf8, tak samo jak tabela, kolumna itp.
Po eksporcie bazy do pliku *.sql i odczytaniu przed dowolny edytor polskie znaki są wyświetlane poprawnie.

Czy ktoś ma pomysł w czym leży błąd, usterka?



fenix23 - 18-11-2008 11:33
Oczywiście problemy są z kodowanie. I wydaje mi się że musisz uściślić co i jak zostaje wyświetlane. Do sprawdzenia jest:

-kodowanie pliku php w konsoli (domyslnie ISO)
-kodowanie w apache2 (miałem problem że na siłę kodował w utf8)
-kodowanie danych wpisanych w phpmyadminie
-kodowanie danych wpisanych za pomocą skryptu z powłoki.

Oczywiście całość musi mieć to samo kodowanie ale to jest oczywiste.



matyskiewicz - 19-11-2008 13:02
Dziś wykonałem 2 testy:
1. Postawiłem na windowsie serwer WAMP (w którym nie miałem takich problemów) i przekopiowałem pliki php jak i dane do bazy. Rezultat taki jak na debianie
2. Wyeksportowałem dane z bazy danych za pomocą XMLa do Accessa no i polskie znaki są.

1. nie rozumiem pytania
2. utf8
3. utf8-general-ci (domyślnie, tabela, komórka itp...)
4. nie rozumiem pytania

Czyli wygląda na to ze w Mysql jest wszystko ok, czyli prawdopodobnie źle koduje apache... No ale:
echo 'żćźńłóęą'; wyświetla ok...



fenix23 - 19-11-2008 13:23

1. nie rozumiem pytania
2. utf8
3. utf8-general-ci (domyślnie, tabela, komórka itp...)
4. nie rozumiem pytania
1. Jeśli piszemy w konsoli to plik ma również jakieś kodowanie. jak napiszemy
echo ąźźżżććłłłłóóóóńńńęęę > plik i wydamy poleceni file plik to zobaczymy w jaki sposób plik jest kodowany. Osobiście pracuje na mcedit i on zapisuje pliki w domyslnym kodowaniu powłoki. Popatrz też na locale

4. Do bazy mysql możemy dwojako wpisywać dane. Jeden sposób to skrypt zakodowany tak jak w konsoli a drugi to wpisane ręcznie przez phpmyadmina które może mieć kodowanie zależne od tego jakie mamy kodowanie w phpmyadminie.

cat /etc/apache2/conf.d/charset

w tym miejscu można sprawdzić wymuszone kodowanie w apache2. Może do czegoś się przyda.

Gdzieś czytałem że można gdzieś te dane z bazy przekodować w razie potrzeby ale jak masz możliwość nie rozpieprzając bazy ustawić wszystko jednolicie to chyba będzie najlepiej.



matyskiewicz - 19-11-2008 13:43
No to już coś mamy.
4. UTF-8
1. Zakodował jakieś ("a umlat" itp...) po odczytaniu w przeglądarce (plik.txt) wyświeliły się: Ponadto na serwerze zainstalowałem forum phpbb no i również są polskie znaki?
Wykonałem plik również przez vim no i również są krzaczki.
Masz jakaś propozycję zmiany tego problemu. Ja już nie wiem kompletnie co to może być...



fenix23 - 19-11-2008 14:04
A jak przestawisz w przeglądarce kodowanie na właściwe to jest dobrze?

PS: Wstawiaj listingi za pomocą
       
        Listing




matyskiewicz - 19-11-2008 14:58

A jak przestawisz w przeglądarce kodowanie na właściwe to jest dobrze? Też nie :/



grucha - 19-11-2008 23:00
Bazę miałeś czystą, czy wgrywałeś z backupu? Jak się mają metody porównywania napisów w bazie do charsetów ustawionych na serwerze?



matyskiewicz - 20-11-2008 11:01
Baza była budowana na bieżąco bezpośrednio przez phpmyadmin na serwerze. Porównywanie napisów zarówno w bazie, tabeli jak i komórce jest ustawione na UTF8-general-ci

[ Dodano: 2008-11-24, 08:20 ]
Znalazłem artykuł pośrednio rozwiązujący ten problem: http://wortal.php.pl/wortal/artykuly..._znaki_a_mysql
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis