url içeren vurgu karakter jQuery ajax arama sunucusuna IE kötü Uri gönderir

4 Cevap php

I was having trouble sending up a url containing accent characters using IE. Here's a simple function:

function runjQueryTest(){
    var url = "/test/Beyoncé/";
    $.get( url, function(){});
}

Sunucusu (PHP) ben ($_SERVER["REQUEST_URI"]) isteği uri değeri kaydetmek ve FF / Chrome IE kadar gönderir ne karşı göndermek ne arasında bir fark görüyorum.

Chrome ve Firefox ($_SERVER["REQUEST_URI"]) olarak değerini neden

/ Test / Beyonc% C3% A9 /

ancak IE 8 istekleri değeri ($_SERVER["REQUEST_URI"]) olmak göstermek

/ Test / Beyonc \ xe9

Bu benim memurunun düzenli ifade işleyicisi sunucusunda doğru eşleşmiyor neden oluyor.

Herhangi bir fikir burada kök sorunu IE için nasıl düzeltebilirim ne olduğunu, ve?

Teşekkürler!

4 Cevap

Ben senin sorunun çözümü karakterler öncesinde url bunları kullanarak kodlamak url olduğunu düşünüyorum. Bu tüm tarayıcılar arasında ortak bir temel verecektir.

Sadece dize urldecode diyoruz :)

<?= urldecode("/test/Beyonc\xe9");?>
/test/Beyoncé

Göre, jquery veya herhangi bir sunucu tarafı kodu kullanabilirsiniz herhangi bir uzantısı indirmeden w3, bunu yapabilirsiniz:

function runjQueryTest(){
    var url = encodeURI("/test/Beyoncé/");
    $.get( url, function(){});
}

Ben elle dize UrlEncode gerekir düşünürdüm. Bu kısa uzantısı deneyin: http://plugins.jquery.com/project/URLEncode

Kullanımı:

alert(  $.URLEncode("This is a \"test\"; or (if you like) an example...");

Çıktı

This%20is%20a%20%22test%22%3B%20or%20%28if%20you%20like%29%20an%20example...