Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] $_GET, kodowanie i różnice w przeglądarkach Opera FF
neverever
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


Dziwna sprawa...

Mam bazę z ustawionym kodowaniem latin2_general_ci, nawiązując połączenie daję oczywiście: mysql_query('SET NAMES latin2',$conn);
Na stronie mam ustawione oczywiście ISO-8859-2.

Teraz łądnie mi dodaje nowe wpisy, ładnie też je pobiera i wyświetla - polskie znaki są ok.

...i teraz pojawia się problem!

Pobrane z bazy słowa są użyte do generowana linków, gdzie to są przekazywane w formie parametru GETem.

przekazywane są plskie znaki, wszystkie inne znaki specjalne są wycinane a spacje zamieniane na -
czyli link ma postać index.php?param=kraków-20-05-2008

Pod Operą by mi dobrze gwyświetało odebrznego geta muszę przekodować:
echo iconv("UTF-8","ISO-8859-2", urldecode($_GET['param']));

pod FF natomiast wtedy mi urywa na polskim znaku.

Ale jak dam:
echo urldecode($_GET['param']);

to pod FF dobrze pokazuje, ale pod operą ó zamienia na krzaczki.

Co jest grane?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
neverever
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


Na stronie mam ustawione ISO-8859-2.

Problem w tym, że w linku muszę przekazać polskie znaki w postaci jawnej - zatem urlencode odpada.

Zrobiłęm sobie prosty skrypt testowy wyświetlający otrzymaną zmienną $_GET i zarzucam mu np. słowo: kraków
Zatem w przeglądarce wklejam linka o postaci: http://localhost/test.php?in=kraków

Opera i IE zamieniają go na: http://localhost/test.php?in=krak%C3%B3w
i wyświetlają w efekcie: krakĂłw

A FF zamienia ten link na: http://localhost/test.php?in=krak%F3w
i wyświetla w efekcie słowo: kraków

Zatem Opera i IE polskie znaki kodują inaczej niż FF!

Żeby pod Operą i IE otrzymać poprawny ciag, muszę otzymaną GETem zmienną przekodować przy użyciu iconv utf-8/iso-8859-2
-no ale wtedy FF niepoprawnie pokazuje wynik - ucina na polskich znakach pokazując tylko: krak

Problem znika jeśli zmienię kodowanie strony na UTF-8 a otrzymaną GETem zmienną potraktuję urldecode.

Jak sobie z tym poradzić zachowując kodowanie strony ISO-8859-2 ?
Podkreślam! znaki w linku muszą mieć postać "jawną" - czyli np.: http://localhost/test.php?in=kraków
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 15:25