Php 对包含重音字符的url的jQuery ajax调用将错误的Uri从IE发送到服务器

Php 对包含重音字符的url的jQuery ajax调用将错误的Uri从IE发送到服务器,php,jquery,internet-explorer,internationalization,Php,Jquery,Internet Explorer,Internationalization,我在使用IE发送包含重音字符的url时遇到问题。 下面是一个简单的函数: function runjQueryTest(){ var url = "/test/Beyoncé/"; $.get( url, function(){}); } 在服务器(PHP)上,我记录请求uri的值($\u server[“request\u uri”]),我看到FF/Chrome发送的内容与IE发送的内容之间存在差异 Chrome和FireFox导致($\u SERVER[“REQUEST\u

我在使用IE发送包含重音字符的url时遇到问题。 下面是一个简单的函数:

function runjQueryTest(){
    var url = "/test/Beyoncé/";
    $.get( url, function(){});
}
在服务器(PHP)上,我记录请求uri的值
($\u server[“request\u uri”])
,我看到FF/Chrome发送的内容与IE发送的内容之间存在差异

Chrome和FireFox导致
($\u SERVER[“REQUEST\u URI”])
的值为

/测试/碧昂斯%C3%A9/

但是来自IE8的请求显示了
($\u SERVER[“REQUEST\u URI”])
的值

/测试/碧昂斯\xe9

这导致我的调度程序的正则表达式处理程序在服务器上无法正确匹配

你知道这里的根本问题是什么吗?我如何为IE解决这个问题


谢谢

我认为您需要手动对字符串进行URL编码。试试这个简短的扩展:

用法:

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

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

只需在字符串上调用urldecode:)


/测试/碧昂丝

我认为解决问题的办法是在url中使用字符之前对字符进行url编码。这将为您提供一个跨所有浏览器的通用基础。

无需下载jquery的任何扩展或使用任何服务器端代码,根据,您可以执行以下操作:

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

urldecode()
不适用于
“/test/Beyonc%C3%A9/”
:您可能需要重新考虑您的沙箱。你很有可能遭到一次猛烈的攻击。
function runjQueryTest(){
    var url = encodeURI("/test/Beyoncé/");
    $.get( url, function(){});
}