2012-04-02 24 views
6

Chrome'u kodlayan bu dönüştürür: aöüß-%C3%A4%C3%B6%C3%BC%C3%9F Ama Firefox burada bu garip şey dönüştürür: a%F6%FC%DF PHP orijinal geri Firefox şeyi dönüştürmek için bir yol bulmak gibi olamaz . Urldecode ve rawurldecode maalesef çalışmıyor. Bununla nasıl başa çıkacağını bilen var mı? Teşekkürler.Fark Firefox - Krom umlauts

cevap

5

. Bu davranışı kontrol edebileceğinizi düşünmüyorum. Ayrıca, bu işlem yapılması zor olacaktır, çünkü kullanılan kodlamayı tahmin etmeniz oldukça zordur.

Bu nasıl çözmenin (tarayıcı bağımlı, uygulamanızda UTF-8 kullanıyorsanız varsayarak):

Krom:

$text = urldecode($_GET['text']); 

Firefox:

$text = utf8_encode(urldecode($_GET['text'])); 

Bu, çoğu durumda çalışan bir çözüm olabilir:

function urldecode_utf8($text) { 
    $decoded = urldecode($text); 

    if (!mb_check_encoding($decoded, 'UTF-8')) { 
     $decoded = utf8_encode($decoded); 
    } 

    return $decoded; 
} 
+0

üzerinde FF11 ile test edildi Teşekkür ederim, işe yaradı. Ama bu farklı Tarayıcı davranışları sadece -.- – Stefan

+0

Evet, aslında Firefox'un hala Latin-1'e yapıştığına şaşırdım. – Niko

+0

Harika! İşlev, – Stefan

1

Sayfanızı UTF-8 kullanmak için zorlar. Muhtemelen bu kodlar farklı şifreli umlanlardır. Biri Latin1 gibi bir şey, diğeri belki de UTF-8.

utf-8'i zorlamak için en iyi yol, html'de bir meta etiketindedir. Firefox Latin-1 kullanırken Krom URL parametrelerini (muhtemelen önerildiği şekilde), UTF-8 kullanıyor: Tei zaten tahmin ettiği gibi

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
+0

PHP ile bir Başlık göndererek ve html meta etiketlerini kullanarak UTF-8'i zorlamaya çalıştım, hiçbir şey işe yaramadı. Ve bu bir form btw, sadece normal bir get parametresi değil mi? Text = aöüß – Stefan

+0

? Text = aöüß urlen kodlanmamış. Kodlamayı korumak için javascript kodlamak için encodeURIcomponent'e ihtiyacınız var. PHP'de kodlamak için rawurlencode kullanabilirsiniz. Eğer bir öğeyi rawurldecode eğer rawurldecode ihtiyacınız ya da ihtiyacınız olacak bilmiyorum .. – Tei

+0

Ekle metin = aöüß Firefox bir sayfaya ve bunu otomatik olarak% F6% FC% DF – Stefan