![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 183 Pomógł: 0 Dołączył: 19.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam mały problem, który zapewne ma jakieś banalnie proste rozwiązanie (gorzej, jeśli nie). Otóż załóżmy, że mam formularz, który znajduje się na stronie kodowanej w standardzie UTF-8. Wszystko pięknie, ładnie ... ale ... ów formularz przekierowuje do innej strony kodowanej w standardzie ISO-8859-2. Oczywiście gdy wpisze się dane, kliknie szukaj, otworzona zostanie strona docelowa a na niej ... "nie znaleziono szukanego wyrazu" ... powodem są polskie znaczki, które wysłane ze strony UTF na stronie ISO przyjmują fantazyjne kształty nijak nie przypominające naszych rodzimych :/ Po rekonesansie w google znalazłem częściowe rozwiązanie - accept-charset="ISO-8859-2". Elegancko ... prosto ... szybko ... NIEKOMPATYBILNE Z IE :/ Normalnie zespół M$ od IE wypuszcza kaszanę za kaszaną. I to nie tylko IE6 ... sztuczka w IE7 też nie działa ... Czyli przykładowy formularz: Na FF i Operze zadziała bez problemu. Po wpisaniu Poznań, Wrocław ... na stronie docelowej zostanie wykonane poprawne zapytanie. Jednak pod IE krzaki jak były tak są. Jest jakiś elegancji sposób na uporanie się z tym problemem?
Powód edycji: Poprawiłem tytuł (ociu)
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
A dlaczego nie użyjesz takiego samego kodowania na obydwu stronach ?
Możesz konwertować znaczki po stronie serwera: iconv" title="Zobacz w manualu PHP" target="_manual -------------------- -------------
------ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 183 Pomógł: 0 Dołączył: 19.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Powiedzmy, że na stronie docelowej nie mogę zmienić (załóżmy, że nie mam tam żadnych uprawnień), a na swojej chcę mieć UTF-8
![]() iconv byłby dobry, gdyby można było na stronie docelowej przekonwertować to co się otrzymało ... ale jak przy formularzu wysyłanym ją zastosować ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Dwa rozwiązania.
1. Request Ajaxowy 2. Curl W obydwu przypadkach zanim wykonasz żądanie konwertujesz dane używając iconv. Potem je przesyłasz. Nie ma sensu klepać tu przykładów gdyż znalezienie takowych na google zajmuje 20sek, ok do minuty przy słabszym łączu ![]() -------------------- -------------
------ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 183 Pomógł: 0 Dołączył: 19.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli nie ma aż tak prosto ... pozostaje curl lub ewentualnie na skrypcie docelowym sprawdzić skąd pochodzi zapytanie i jak ze strony nr 1 to ma być użyty iconv
![]() ![]() |
|
|
![]()
Post
#6
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Jest parę rozwiązań.
Osadź formularz w iframe (taki na wielkość formularza) i ustaw tam kodowanie takie jak potrzebujesz, a na reszcie strony bez problemu masz UTF8. Kolejne rozwiązanie: Jeżeli to jedyny formularz na stronie i nie będzie się gryzło nic w serwisie (brak innych formów, ewentualnie pozbyć się ich) łapiesz tylko tą jedną stronę przy pomocy ob_start" title="Zobacz w manualu PHP" target="_manual() zamieniasz kodowanie na całej stronie z UTF na ISO i head charset na ISO, wtedy tylko ta jedna stronka jest na ISO i formularz może wysłać normalnie dane. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 1.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
witam,
też miałem ten problem, ja dodałem dodatkowy skrypt między starą, a nową stronę nowa(kodowanie utf8)->dodatkowy_skrypt.php->stara(kodowanie iso) a w dodatkowy_skrypt.php (dla GET) $newUrl = 'http://staryserwis.pl?'; foreach(array_keys($_GET) as $key) $newUrl .= $key."=".urlencode(iconv('UTF-8', 'ISO-8859-2',$_GET[$key])).'&'; header( 'Location: '.$newUrl) ;?> Pozdrawiam, Adam |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.05.2025 - 09:44 |