Forum » Programiranje » PHP uničeni šumniki pri urldecode
PHP uničeni šumniki pri urldecode
peterd ::
Imam problem, ki mi para živce.
Preko urlja dobim vnos s šumniki npr.
testMsisdn.php?msisdn=xxxxxx&msg=odgovor%20%E8%E6%20%9A%9A%20%E6%E6%20%9E%9E%F0%F0%20konec
Šumniki se pretvorijo v urlkodiranje in so predstavljeni s posebnimi znakci. Vse lepo in prav.
Problem se pojavi ko hočem dobiti vsebino msg in je le ta v "čudnem" kodiranju.
Urldecode vem da ni kriv saj je request avtomatko urldecoded.
Problem je da to samo deluje če je cel php fajl shranjen v ASCII formatu. Tega nočemo saj mora biti koda hranjena v UTF8 formatu. Tukaj pa hudič dobi mlade.
Ko pogledam izpis msg zagotovo vem da ni utf8 saj je ASCII ampak kako se lahko v ASCII tabelo sploh shranijo šumniki. Zakaj je to sploh delovalo???!
Kar koli poskušam da bi string msg pretvoril v UTF8 je brez uspeha. Zmeraj dobim samo "kvake" ki nečesar ne pomenijo. Tudi encodinga ne morem dobiti s mb_ check_ encoding.
Tako se šumniki ne morejo zamenjati(str_replace) in posledično crkne iconv saj vsebuje msg čudne znakce.
Ima kdo kako idejo? Bom zelo zelo zelo zelo hvaležen.
Preko urlja dobim vnos s šumniki npr.
testMsisdn.php?msisdn=xxxxxx&msg=odgovor%20%E8%E6%20%9A%9A%20%E6%E6%20%9E%9E%F0%F0%20konec
Šumniki se pretvorijo v urlkodiranje in so predstavljeni s posebnimi znakci. Vse lepo in prav.
Problem se pojavi ko hočem dobiti vsebino msg in je le ta v "čudnem" kodiranju.
Urldecode vem da ni kriv saj je request avtomatko urldecoded.
The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results.
$msg = $_REQUEST["msg"]; $msg=str_replace(array("č","š","ž","Č","Š","Ž","đ","Đ","ć","Ć"),array("c","s","z","C","S","Z","dj","Dj","c","C"),$msg); error_log("Kaj sem dobil".$msg); $msg = iconv('UTF-8','ASCII//TRANSLIT',$msg); error_log("Pokazi mi tekst ko je iconv koncan!! ".$msg );
Problem je da to samo deluje če je cel php fajl shranjen v ASCII formatu. Tega nočemo saj mora biti koda hranjena v UTF8 formatu. Tukaj pa hudič dobi mlade.
Ko pogledam izpis msg zagotovo vem da ni utf8 saj je ASCII ampak kako se lahko v ASCII tabelo sploh shranijo šumniki. Zakaj je to sploh delovalo???!
Kar koli poskušam da bi string msg pretvoril v UTF8 je brez uspeha. Zmeraj dobim samo "kvake" ki nečesar ne pomenijo. Tudi encodinga ne morem dobiti s mb_ check_ encoding.
Tako se šumniki ne morejo zamenjati(str_replace) in posledično crkne iconv saj vsebuje msg čudne znakce.
Ima kdo kako idejo? Bom zelo zelo zelo zelo hvaležen.
peterd ::
Napisal sem funkcijo ki gleda črko po črko in če je znak ččššđđžžćć ga zamenjam. To mi za zdaj dela. Boljšega ne najdem.
function replaceNonAsciiCharacters($str){ $return = ""; for($i = 0; $i < strlen($str); $i++) { $asciNum = ord($str[$i]); switch($asciNum){ case 232://č $return .= "c"; break; case 200://Č $return .= "C"; break; case 154://š $return .= "s"; break; case 138://Š $return .= "S"; break; case 158://ž $return .= "z"; break; case 142://Ž $return .= "Z"; break; case 230://ć $return .= "c"; break; case 198://Ć $return .= "C"; break; case 240://đ $return .= "dj"; break; case 208://Đ $return .= "Dj"; break; default: $return .= $str[$i]; break; } } return $return; }
680x0 ::
1.) Uporabi POST namesto GET
2.)
2.)
function urle_ncode($string){ return urlencode(utf8_encode($string)); } function url_decode($string){ return utf8_decode(urldecode($string)); }
Zgodovina sprememb…
- spremenil: 680x0 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [PHP]Zamenjava šumnikov z html kodamiOddelek: Programiranje | 4118 (2396) | mikesr |
» | [c#] Ustvarjanje objekta v drugem razreduOddelek: Programiranje | 1680 (1625) | Cvenemir |
» | [php]$_POST iz šumnikov v nešumnikeOddelek: Izdelava spletišč | 1631 (1543) | Gost |
» | uporaba C++ unmanaged kode v C#.NET projektuOddelek: Programiranje | 1933 (1656) | krho |
» | EncodingOddelek: Izdelava spletišč | 1474 (1354) | gerrno |