PHP nasıl bir unicode url okunur?

3 Cevap php

? \ Test.php sText = Московский: Ben bir unicode url var

Ben stext değeri ile çalışmak için $ _GET fonksiyonunu kullanmak istiyorum. Ben test.php için var kodu:

<?php
$sVar = $_GET['sText'];

echo "Variable = $sVar";
?>

Değişken =: Problem yukarıdaki gibi bach geliyor olmasıdır?????

Ne yapmam gerekiyor?

3 Cevap

Tüm geri bildirim için teşekkürler.

Ben tüm örneklerini denedi ama ben bile hala utf-8 olarak kaydettikten sonra, soru işaretleri geri almak.

Ben unicode desteği sağlamak için belki etkinleştirmek / eklemek gerekebilir bir php.ini ayar var mı?

Şu anda, benim için neyse, aşağıdaki kodu:

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<?php
$sVarControl = "Московский";
$sVar = $_GET['sText'];

echo "Control = $sVarControl <br />";
echo "Variable = $sVar <br />";

?>
</body>
</html>

Aşağıdaki çıktıyı üretir:

Control = Московский
Variable = ??????????

Yani sayfa ile çalışan ve unicode görüntüleme yeteneğine sahiptir. $ _GET Fonksiyonu limitationof bu bir belki var mı?


DÜZENLEME

Ben sadece Google Chrome'da sayfası çalışan denedim ve mükemmel çalışıyor. Bu bana onun bir IE ayar düşünmeye yol açar. Ama ne? Ve onu nasıl halledebiliriz?

Ben (işlevin parametreleri sistem konfigürasyonuna bağlı olarak değişebilir) sorununuzu çözmek için () işlevini iconv kullanmak denedim:

$get = iconv('CP1251', 'UTF-8', $_GET['text']);
echo 'Variable = '.$get; // Variable = Московский

Sen hakkında okumak iconv functions. Olabilir Ben sizin için yararlı olacak, umarım.

Sonunda bu çözüldü, (hızlı cevap için bu yazının son paragrafına bakınız) bazı iyi ipuçları için hepinize teşekkür ederim.

Ben zor şeyler yapıyordum yanlış bir şeyler yapıyordu.

Kayıtları benim veritabanına yazılı almıyorum zaman ilk benim kodlama sorunları fark ettim, db ve tabloları tüm utf-8 için kuruldu böylece php bıraktı.

İşleri kolaylaştırmak için ben sorunu göstermek için bir test php sayfası oluşturdu. Sayfa url ($ _GET) değerler alma gibi benim test sayfası yüklendiğinde, ben url test.php bir unicode parametre ile yaptı? SText = Московский

Benim için sorun, bence, nedense onun çözemedi veya unicode olarak tanımak, IE url interoperating nasıl oldu. Ben başarısız sayfa im Chrome başlatılan ve o amele mükemmel Bu aparrent oldu.

Ben çıktı Chrome ve IE tam url için aşağıdaki işlevi kullanmak için ilerledi

<?php
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

echo curPageURL();
?>

Internet Explorer 8 aşağıdaki yankılandı:

http://localhost/FirstProject/test.php?sText=?????

Krom Ancak, kodlanmış bir url yankılandı:

http://localhost/FirstProject/test.php?sText=%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9

Ben UTF-8 için içerik türünü batmıştı çünkü tahminen, krom otomatik url kodlayan, ve PHP otomatik olarak okuma ve doğru çözme edildi görebileceğiniz gibi (teşekkürler Philippe).

IE bu gibi davranıyor neden hala emin değildi ama arama sayfasında url kodlamak için yönde beni itti. I encodeURIComponent() fonksiyonunu denedim çok javascript sayfasını çağırıyordu. Neyse ki bu çalıştı ve şimdi CHROME ve IE aynı sonucu alıyorum im.

Yani uzun lafın kısası, ben arama url kodlama için encodeURIComponent() kullanmak bir ben header('content-type: text/html; charset=utf-8'); tüm unicode url değişkenleri doğru işlenir için hedef php sayfanın içerik türünü ayarlamak emin olun eğer.

Thanks again for all your help. Craig