ugrás a tartalomhoz

Archívum - Feb 6, 2012 - Fórum téma

URL dekódolás vegyes inputnál

pkadam · 2012. Feb. 6. (H), 18.00
Sziasztok!

Adott egy www.example.com/search/keresőszó felépítésű URL, amit az Apache rewrite-ol index.php?rewrite=/search/keresőszó formába (a weboldal UTF-8 kódolású). A keresőszó az URL manuális módosításával is megváltoztatható, ami egy ponton problémához vezet: ha tartalmaz kérdőjelet, akkor az azt követő ékezetes karakterekkel gondok vannak. Ugyanis látszólag mindhárom nagy böngésző különbözőképpen viselkedik, és a kérdőjel utáni részt eltérő kódolással "adják tovább".

A Chrome UTF-8-cal, így az urldecode() sikeresen feldolgozza.

Az Internet Explorer (elvileg) ISO-8859-2-vel (a kérdőjel előtti ékezetes karakterek UTF-8-cal). És azért elvileg, mert a $_SERVER['REQUEST_URI']-t kiíratva nem az enkódolt karakterek látszanak (mint Chrome vagy Firefox esetén), hanem az ismeretlen karaktert jelző kérdőjelek. Itt megoldja a problémát az URL-dekódolás előtti iconv(), ISO-8859-2-ről UTF-8-ra alakítással.

A Firefox ISO-8859-2-vé alakítja a kérdőjel utáni ékezetes betűket (azt megelőzően UTF-8-cá), viszont semmilyen módon nem sikerül az URL-ből az eredeti keresőszót kinyerni. Az URL-t kiíratva "é?é" esetén "%C3%A9?%E9" az enkódolt állapot, azonban a fenti módszerek bármelyikével a "%E9" helyett az IE-nél már tapasztalt rombuszba foglalt kérdőjel jelenik meg.

Van valami ötletetek?

Előre is köszönettel,
Ádám