Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie znak zapytania zamiast krzaków
Forum PHP.pl > Forum > PHP
exaybachay
Witam.
Mam taką sytuację. Mam komputer, na którym mam zainstalowanego debiana.
Na tym komputerze tworzyłem stronę i wszystko było ok.
Przeniosłem stronę na serwer i zaistniały problemy z kodowaniem.

Pobieram dane z bazy danych mssql w obu przypadkach z tej samej.
Na własnym komputerze przy odczytywaniu zmieniam kodowanie na utf, przy zapisie na windows 1250.
Przeniesiona na serwer strona nie widzi polskich znaków pobranych z bazy.
Na komputerze były to krzaki (taki znak zapytania, ale z tłem itd.) i przy konwersji wszystko było ok.
Na serwerze zamiast polskich znaków jest zawsze jeden znak zapytania, a nie krzaki.

Sądzę, że problem leży gdzieś po stronie konfiguracji serwera.
Może ktoś wie co zrobić żebym widział krzaki.

Pozdrawiam
enemyofarcha
Sprawdź kodowanie rekordów w bazie danych.. W razie czego użyj UTF-8, lub latin2_general_ci.

EDIT: Albo też możesz ustawić kodowanie na całą bazę danych...
exaybachay
Witam.
Zmiana musi nastąpić po stronie konfiguracji serwera www, a nie bazy danych.
Baza danych się nie zmieniła, strona też nie.
Zmiana dotyczy przeniesienia strony na inny serwer gdzie też jest ta sama wersja linuxa,
tylko z najpotrzebniejszymi pakietami i może czegoś brakować, albo być źle skonfigurowane.
Więc może ktoś ma pomysł co trzeba doinstalować/skonfigurować żebym zamiast znaku zapytania
miał krzaki.

Pozdrawiam.
Dumdas
  1. mysql_query('SET NAMES latin2');

Wstaw to zaraz po wybraniu bazy danych. Ustawi do dobrze stronę kodową i polskie znaki będą poprawnie czytane.
Możesz to przestawić też na każde inne kodowanie dostępne w MYSQL (np. utf8 czy ascii).
exaybachay
Po pierwsze nie chcę nic zmieniać na bazie bo nie w tym jest problem.
Problem polega, że mam 2 takie same systemy z tym, że na jednym jest poinstalowane
więcej pakietów, a drugi jest typowo serwerowym czyli ma minimum pakietów i któregoś brakuje.
System to Debian.
A baza stoi na windzie i to MSSQL i nie mogę zmian dokonywać na tej bazie.
Problem polega na braku jakiegoś pakietu w systemie, albo jego nie odpowiedniej konfiguracji.
Myślałem, że zapytam i ktoś mi pomoże od ręki, dlatego zapytałem, bo prędzej czy później
znajdę rozwiązanie, ale chodzi o to, że potrzebuję tego rozwiązania na wczoraj.

Pozdrawiam.
damyrade1990
Wszędzie kodowania musisz mieć takie same dotyczy to także colleteów tabel baz danych
Dumdas
A próbowałeś to, co Ci napisałem?
To niczego w bazie nie zmieni, źle się wyraziłem. To odpowiednio ustawi połączenie.
exaybachay
Hey.
Nie chcę w ten sposób rozwiązać tego problemu, tylko chcę dojść gdzie leży jego przyczyna w konfiguracji.

Pozdrawiam.
Dumdas
W takim razie - kodowanie bazy danych jest nie takie (powinien być dla polskiego któryś "podgatunek" latin2 tongue.gif). Jak zmienisz teraz, to Ci się pojawią krzaczki w bazie danych chyba, więc przed eksperymentowaniem ew. zalecam zrzut bazy winksmiley.jpg
exaybachay
Witam.
Chyba źle się zrozumieliśmy.
Mam dwa takie same systemy na dwóch różnych komputerach. Na jednym strona działa, połączenie z bazą danych jest prawidłowe, wszystko wyświetla się tak jak powinno.
Na drugim z kolei czegoś brakuje i po pobraniu danych z bazy, nie rozpoznaje znaków prawidłowo.
Więc kodowanie bazy jest prawidłowe skoro na jednym działa, więc da się zrobić to samo na drugim.
Z tym, że na drugim jest minimalna ilość zainstalowanych pakietów i w tym może być problem.
Systemy to debian.

Pozdrawiam.
-=Peter=-
@Dumdas - kolega, który założył temat ma bazę danych mssql, a nie mysql - czytaj uważnie winksmiley.jpg. Set names działa tylko w mysql (być może też innych silnikach, ale napewno nie na mssql).
cojack
http://forum.php.pl/index.php?s=&showt...st&p=514237

@edit
używajcie dalej mssql to nie będziecie mieć problemów...
exaybachay
Cojack tego już próbowałem i to jest fajne bo ustawia w jakim kodowaniu mają przyjść dane z bazy, i wszystko byłoby fajnie gdyby nie fakt, że część z nich w bazie siedzi w kodowaniu utf8 (prosiłbym tego nie komentować, bo nie mam na to wpływu). Teraz jak użyję tego mssql.charset="cp1250" to te dane, które są zapisane w bazie w kodowaniu utf8 (czyli w bazie są krzaki tych danych) po pobraniu odczytywane są tak jak zostały zapisane w bazie czyli z krzakami. Ja potrzebuję, żeby php odczytało te znaki z bazy dosłownie tak jak zostały zapisane. Czyli jeżeli w bazie mam 'SĹ‚owik' to po pobraniu z bazy tak ma to php przekazać do przeglądarki, która odczyta to jako 'Słowik', a jeżeli w bazie mam 'Słowik' (czyli po pobraniu z bazy będę miał 'S??owik') to tak chcę to mieć, żeby później to przekonwertować przy pomocy funkcji konwertującej na Słowik i dopiero przekazać przeglądarce.
Poza tym mssql.charset nie jest ustawione na serwerze, na którym robiłem stronkę, więc nie chodzi tu o to.

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