PDA

Zobacz pełną wersję : Polskie znaki - dziwan sytuacja IE



pawelpaciorek
20-08-2007, 13:52
Witam,
zainstalowałem Joomle 1.013 w kodowaniu iso-8859-2. link do strony -> www.cwt.sp.mil.pl/dspnew/ (http://www.cwt.sp.mil.pl/dspnew/)
Pod Opera i FF nie mam problemu pod IE (v6 sp2 i v7) jest sytuacja taka:
a) Przy zaznaczonej opcji kodowanie->automatyczny wybór:
- po wybraniu pozycji z menu zamiast polskich znaków pojawiają się znaki specjalne charakterystyczne dla iso, np: ±, przeglądarka pokazuje kodowanie Europa Środkowa Windows pomimo faktu, iż w kodzie jest iso-8859-2
- po kliknięciu kilka razy w ten sam link, na przemiennie znaki z poprawnie wyświetlonymi polskimi literami
- po użyciu F5, polskie znaki wyświetlają się poprawnie

b) Przy odznaczonej opcji kodowanie->automatyczny wybór wszystko działa jak należy.

Proszę darować sobie odpowiedzi typu - nie zaznaczaj tej opcji bo to nie o mnie chodzi tylko o użytkowników, poza tym mam inny serwis na mambo i nie ma takiego problemu.

Testowałem również utf-8, dokładnie to samo.

Pozdrawiam
Paweł

zwiastun
20-08-2007, 17:44
Mogę Cię zapewnić, że nie jest to wina Joomla!. I to na razie wszystko.

Resztę, jak proponujesz, daruję sobie, bez względu na to, co mialbym Ci do powiedzenia.

Różnica między nami. Ja tu nie pierwszy raz. Ty pierwszy!

kkmm1
20-08-2007, 20:13
1) podana strona nie dziala
2) problem jak dla mnie polega mniej wiecej na tym na czym polegal ostatnio problem osoby proszacej o pomoc w tej sprawie .. tym razem sie rozpisze co by mnie Zwiastun nie zje***al :) tak wiec masz problem w kodowaniu jak zauwazyles. Najczesciej polega on na dwukrotnym wpisaniu tej samej zmiennej o roznych wartosciach. Raz odwoluje sie przegladarka do jednej raz do drugiej.

Mozliwosc na grzebanie to poszukaj w plikach jezykowych czy masz 8859-2 . W bazie danych czy masz utf-8 polish , jak rowniez w szablonie czy jest 8859-2.....

zamiast grzebac w plikach i roznych ustawieniach w szblonie znajdz odnosnik do deklaracji jezyka i zmien na sztywny wpis
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

UWAGA POWODUJE TO IŻ SZABLON I TO CO W NIM WYSWIETLANE ZAWSZE MA ISO 8859-2 a za razem nawet prz zmianie jezyka bedzie kodowanie polskich znakow a nie np.rosyjskich (deklaracja w rosyjskim pliku jezykowym nie bedzie dzialac)

RADA: zobacz czy "na sztywno" bedzie wyswietlana tresc prawidlow, bo jesli tak to znaczy ze 2 rozne deklaracje ISO masz gdzies i po sprawie. Jesli bedzie to samo to nie wina joomli tylko... np. Bzy danych wtedy sprawdz kodowanie znakow w bazie

Wiecej moze by sie dalo jakby strona dzialala a obecnie to nie dziala :) Pozdr.

zwiastun
20-08-2007, 21:54
Eeee tam, kkmm1 moze i masz rację, ale raczej nie masz. Problem leży zupełnie gdzie indziej. Przeczytaj moją odpowiedź i treść posta pytajacego, a zrozumiesz, czemu odpowiedź jest taka.

PS. Czemu zaraz zakładasz, że dostaniesz po uszach (prawda, ze lepiej brzmi? niż te kropeczki?). To jednak wolne forum wolnych ludzi, jeno pewne zasady obowiązują.

pawelpaciorek
20-08-2007, 22:08
Rzeczywiście, serwis został przeniesiony, www.sp.mil.pl

W szablonie jest poprawna wartość czyli 8859-2
zwiastun wybacz ale nie jestem osobą, która pierwsze co robi to leci na forum z pytaniem, spędziłem nad tym dziś cały dzień i nie mogę sobie poradzić, wątki na forum też wcześniej przejrzałem i jedyne co można się z nich dowiedzieć to błędna składnia w templatkach co u mnie jest poprawione.


Pozdrawiam
Paweł

Dakota
20-08-2007, 22:21
w ie 6 poprawnie wyświetlają się polskie znaki

pozdrawiam
Dakota

zwiastun
20-08-2007, 23:36
1. Nie zakładam, że zaraz lecisz na forum. Przyznasz jednak, że składając pierwszą wizytę u kogokolwiek, nie wypada mu stawiać warunków, na jakich mu tę wizytę składasz?
I mimo, że zasygnalizowałem Ci rzecz raczej delikatnie, nadal starego belfra chcesz nauczyć uczyć dzieci.


2. W szczegóły wchodzić nie będziemy, ile w sprawie kodowania znaków można się dowiedzieć z forum.
Wystarczyło, żebyś:
1. zadał pytanie
2. napisał, ze w szablonie jest OK, w pliku polish.php OK oraz podał jakiekolwiek informacje o serwerze, na którym toto testujesz.
Nie twierdzę, że dostałbyś 100% rozwiązanie problemu. Ale dostałbyś rozwiązanie a nie offtopic.
No i nie traciłbyś może czasu


Niektóre powody niepoprawnego wyświetlania polskich znaków na stronach witryny:
niepoprawna konfiguracja serwera Apache,
błędy w szablonie witryny,
niepoprawny wpis w pliku językowym witryny,
wadliwe ustawienie przestrzeni nazw w pliku database.phpProblem z niepoprawną konfiguracją serwera pojawia się raczej tylko w środowisku testowym, gdy zadeklarowane jest domyślne kodowanie połączeń. Rozwiązaniem jest skomentowanie w pliku konfiguracyjnym Apache zmiennej AddDefaultCharset.
W dokumentach wynikowych HTML Joomla! deklaracja kodowania w nagłówku powinna być generowana dynamicznie, po odczytaniu stałej _ISO z pliku języka. Zdarzają się dwie sytuacje:
bezpośrednia deklaracja kodowania, niezgodna z kodowaniem witryny
często powtarzający się błąd – niepotrzebnie umieszczony dodatkowy nawias ostry,Linia odpowiedzialna w szablonie za kodowanie powinna wyglądać tak
<meta http-equiv="Content-Type" content="text/html; <?php echo _ISO; ?>" />
Wspomniany, dodatkowy a niepotrzebny ukośnik bywa umieszczony po content="text/html.

Deklaracja kodowania znaków znajduje się w pliku językowym. Bywa, że zapisujemy plik w poprawnym kodowaniu, zapominając zmienić deklarację tej stałej. Trzeba więc sprawdzić linię:
DEFINE('_ISO','charset=utf-8');

W przeznaczonym dla MySQL < 5 pliku w katalogu /includes odszukaj linię:
@mysql_query("SET NAMES 'utf8'", $this->_resource);

Standardowo linia ta jest skomentowana. Usunięcie znaków komentarza i umieszczenie odpowiedniego kodowania (utf8 lub latin2) często rozwiązuje problemy.

Przy tej okazji warto przypomnieć, że domyślny plik database.php przeznaczony jest dla MySQL w wersji niższej niż 5.0. Jeśli na serwerze działa MySQL w wersji w wersji 5 i wyższej, należy zamienić ten plik na umieszczony w tym samym katalogu database.mysql5.php. Zmieniamy nazwę oryginalnego pliku na database.mysql4.php, a przeznaczonego dla MySQL 5.x na database.php. Dysponujemy tutaj również skryptem obsługującym database.mysqli.php, którego można użyć, gdy na serwerze mamy PHP w wersji 5 i MySQL w wersji 4.1.

W Twoim przypadku najprawdopodobniej masz do czynienia z pierwszą przyczyną - testujesz stronę na serwerze, na którym jest ustawiony domyślny charset w Apache - na to wskazują objawy, o jakich piszesz. Do przeglądarki dociera bowiem wcześniej nagłówek, że otrzymuje coś w kodowaniu innym niż to coś rzeczywiście jest i ma zadeklarowane

pawelpaciorek
21-08-2007, 07:12
dzięki za pomoc i sorki za tą kąśliwą uwagę w pierwszym poście, miałem wczoraj bardzo ciężki dzień

pozdrawiam
Paweł

pawelpaciorek
21-08-2007, 08:28
sprawa wygląda tak:
1. AddDefaultCharset - nie dotyczy nas, to jest w apache 2.0
2. Template ustawione ma sztywno kodowanie ale jeśli nawet miał standardowe zmienne to w pliku polish.php było iso-8859-2
3. w database.php linia "set names" jest aktywna i ustawiona na Latin2
Co do samej zmiany pliku na database.mysql5, oczywiście po uzgodnieniu nazw, serwis nie ma łączności z bazą

Teraz baza, tabele mają kodowanie utf8, jakoś nie bardzo chce mi się wierzyć, że to ma wpływ, inny spory serwis działający na mambo ma Latin1, strona jest kodowana w 8859-2 i po użyciu "set names: 'Latin2'" nie ma problemów, ale oczywiście mogę się mylić.

Jak dla mnie oczywiste jest że gdzieś dociera drugi nagłówek, problem polega na tym, że nie mogę go zlokalizować :(
Zastanawia mnie jeszcze fakt, dlaczego po użyciu refresh (F5) dociera poprawny nagłowek, przecież strona i tak wczytuje się od nowa??

------
EDIT

zrobiłem test i ujednoliciłem kodowanie w bazie na Latin2, efekt jest dokładnie taki sam



Pozdr
Paweł

pawelpaciorek
22-08-2007, 09:21
Witam ponownie,
a więc zawęziłem "krąg podejrzany" :)
W tej chwili jestem pewien, że problem generuje bot JoeGadgets.
Jak tylko uda mi się ustalić co dokładnie jest przyczyną moich problemów poinformuje, o ile to jeszcze kogoś interesuje ;)

taquilla
30-08-2007, 10:15
Witam
Nie masz polskich znakow przeczytaj to co napisal ZWIASTUN przemysl i zrob a beda napewno :)
Mam wlasny serwer na ktorym jest kilka instalacji joomla.
Wersja serwera: 5.0.24a-Debian_3-log
Wersja klienta MySQL: 5.0.24a
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
PHP wersja 5.1.6-1
A teraz historia
1) Zona chce sklep a wiec mialem starsza wersje joomla z VirtueMart szukam nowej instaluje Joomla-1.0.12_eCommerceEdition_VM-1.0.12.tar a ze chce miec po polsku to szukam polskiego Joomla i sa 2 opcje ISO i UTF. A ze jest napisane ze jak stawiasz od nowa to wybierz UTF to sprawdzam na testowej domenie. UTF przy instalacji pokazuje mi po wybraniu POLISH krzaczki zamiast polskich liter. Mysle znowu szopki z literkami to sprawdzam wersje ISO i tu ladnie polskie literki widac przy instalacji.. To na sklep nakladam cala Joomla 1.0.13 JIE iso Na głownej stronie serwisu w tytulach modulow nie ma polskich liter, w administracji jest wszystko ok po polsku, nawet VirtueMart jest po polsku oczywiscie po dodaniu langa. Ale dodajac towar nie zapisuje polskich liter. A wiec tylko to co pobiera z bazy jest nie tak. Np. jak nazwalem modul ąśżźćę to po zapisanu nazywal sie ?????? i w bazie danych bylo ??????. Przekonwertowalem cala baze do UTF8 porownywanie napisow UTF8. i wszystko sie wyjasnilo. Joomla zaczela zapisywac i pokazywac polskie znaki.

2) Przypadek drugi. Rozwalil mi sie serwis bo nie robilem kopi bezpieczenstwa bazy :( .A wiec okazja postawic serwis od nowa. A od nowa to zgodnie z propozycja w UTF. Robie baze w kodowaniu UTF porownywanie napisow UTF. Odpalam instalacje nie zrazajac sie krzakami zamiast polskich liter ( po przelaczeniu w przegladarce na utf pokazuja sie polskie literki) mysle moze to tylko instalacja tak ma a strona pokaze sie ok. Zainstalowalem a strona nie pokazala sie OK z polskimi literkami. Przeczytalem uwaznie to co powyzej napisal ZWIASTUN. Sprawdzilem pare razy wszystko. Podmienialem templatki, ustawialem kodowanie w nich i nic. Strona pokazywala zamiast polskich liter "Gościmy ąśżźćęńół" to cos takiego "GoĹ�cimy Ä�Ĺ�şźÄ�Ä�Ĺ�ĂłĹ�" a wiec literki kodowane w utf. Pozostal punkt 1 od ZWIASTUNa "niepoprawna konfiguracja serwera Apache"
Na serwerze zmienna AddDefaultCharset mam w pliku httpd.conf skomentowanie jej "#" nic nie dalo
dopiero w pliku php.ini jest linijka
default_charset = "iso-8859-2"
ustawienie jej na
default_charset = "utf8"
pomoglo temu serwisowi ale inne ktore sa w iso pokazaly ???????? zamiast polskich liter
# default_charset = "iso-8859-2"
a te powyzej rozwiazanie jest najleprze.
Teraz jest wszystko ok.
Pozdrawiam