![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
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? -------------------- neverever
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Na stronie jakie masz ustawione kodowanie?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
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 -------------------- neverever
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 213 Pomógł: 39 Dołączył: 7.04.2008 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
jestem zielony z PHP, ale jesli się wywoła phpinfo, to można sprawdzić jakiej się używa przeglądarki. jest też sposób aby się dowiedziec jakiej używa przeglądarki ktoś kto odwiedza stronę, za pomocą wyszukiwania odpowiedniego ciągu znaków. Wtedy mógłbyś osobno zrobić skrypt dla Opery a osobno dla Fiefox. Szczegółów na ten temat jest mnóstwo, w manualu też jest bo pamiętam. To tylko takja sugestia jest, zapewne o tym sposobie wiesz
PS. konkretnie chodzi mi o get_browser() Ten post edytował hiszpanespaniol 16.04.2008, 12:51:53 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 110 Pomógł: 13 Dołączył: 16.03.2007 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi sie, ze nie da sie rozwiazac tego problemu z poziomu skryptu.
Tutaj chodzi o kodowanie tekstu wprowadzanego recznie do paska adresu i rozne przegladarki roznie go koduja (prawdopodobnie zalezy to od ustawien przegladarki u klienta). Pomijajac kodowanie URL: krak%C3%B3w jest kodowane w UTF-8 krak%F3w jest kodowane w ISO Jasli utworzysz taki dokument z polskim znakiem w odnosniku (obojetnie czy to HTML czy PHP): to zadeklarowane kodowanie wymusi na przegladarce zakodowanie polskich znakow w adresach odnosnikow w iso-8859-2. Wtedy w kazdej przegladarce bedzie w pasku adresu: http://localhost/test.php?in=krak%F3w Jesli jednak wpiszesz ten aders recznie z polskim znakiem to przegladarka nie wie jak bedzie zakodowany dokument ktorego jeszcze nie pobrala i zakoduje ten znak wg swoich wlasnych domyslnych ustawien. Opera akurat koduje w UTF-8 a FF w ISO. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 09:25 |