exaybachay
8.10.2009, 11:48:45
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
8.10.2009, 12:39:49
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
8.10.2009, 17:09:42
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
9.10.2009, 14:31:57
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
10.10.2009, 17:36:49
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
10.10.2009, 22:54:54
Wszędzie kodowania musisz mieć takie same dotyczy to także colleteów tabel baz danych
Dumdas
11.10.2009, 09:58:09
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
12.10.2009, 10:31:56
Hey.
Nie chcę w ten sposób rozwiązać tego problemu, tylko chcę dojść gdzie leży jego przyczyna w konfiguracji.
Pozdrawiam.
Dumdas
12.10.2009, 17:24:22
W takim razie - kodowanie bazy danych jest nie takie (powinien być dla polskiego któryś "podgatunek" latin2

). Jak zmienisz teraz, to Ci się pojawią krzaczki w bazie danych chyba, więc przed eksperymentowaniem ew. zalecam zrzut bazy
exaybachay
13.10.2009, 07:52:58
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=-
13.10.2009, 08:10:27
@Dumdas - kolega, który założył temat ma bazę danych mssql, a nie mysql - czytaj uważnie

. Set names działa tylko w mysql (być może też innych silnikach, ale napewno nie na mssql).
cojack
13.10.2009, 08:38:10
http://forum.php.pl/index.php?s=&showt...st&p=514237@edit
używajcie dalej mssql to nie będziecie mieć problemów...
exaybachay
13.10.2009, 17:23:06
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.