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 | 4263 (2541) | mikesr |
| » | [c#] Ustvarjanje objekta v drugem razreduOddelek: Programiranje | 1775 (1720) | Cvenemir |
| » | [php]$_POST iz šumnikov v nešumnikeOddelek: Izdelava spletišč | 1777 (1689) | Gost |
| » | uporaba C++ unmanaged kode v C#.NET projektuOddelek: Programiranje | 2079 (1802) | krho |
| » | EncodingOddelek: Izdelava spletišč | 1556 (1436) | gerrno |