编程语言
首页 > 编程语言> > Javascript – encodeURI()在不同的浏览器中修复不同的结果

Javascript – encodeURI()在不同的浏览器中修复不同的结果

作者:互联网

我使用encodeURI()来编码一个php请求网址,它在Firefox和Chrome中运行得很好,但它不在IE / Edge中.

实际网址是:
http://localhost/get.php?id = e_e2& title = e2& desc = just a note& stime = 6/12 / 2015,1:00 AM AM& etime = 15/12 / 2015,1:00下午00点

Firefox返回的是(有效):
http://localhost/get.php?id = e_HO事件1& title = HO事件1& desc =这只是此次切换的测试事件& stime = 6/12 / 2015,1:00 AM AM& etime = 10/12 / 2015,下午1:00:00

IE返回什么(打破php代码):
http://localhost/get.php?id = e_HO事件1& title = HO事件1& desc =这只是此次切换的测试事件& stime = 6/12/2015 1 :00:00 AM& etime = 10/12/2015 1:00:00 PM

我试图解码IE返回的内容,但它给我带来了很多问题!所以有没有其他的encodeURI()?,FF似乎工作,即使我不编码url,IE工作如果我复制FF编码url到它!

更新:
示例代码link

我认为它与toLocaleString()有关

最后更新:

很少有人回答,链接中的一些标记“只出现在IE中!”我不得不过滤并更改我的PHP脚本日期格式以删除逗号

function FixLocaleDateString(localeDate) {
    var newStr = "";
    for (var i = 0; i < localeDate.length; i++) {
        var code = localeDate.charCodeAt(i);
            if (code != 44 && code != 8206 ) {
                newStr += localeDate.charAt(i);
            }
    }
        return newStr;
}

我在另一个答案中找到了这个函数并修改它:ToLocaleDateString() changes in IE11

解决方法:

问题不在于encodeURI(尽管正如其他人所指出的那样,你不应该使用encodeURI,而是使用encodeURIComponent对各个组件进行编码,然后将它们连接在一起).

问题是日期由于某种原因包含许多U 200E“LEFT-TO-RIGHT MARK”字符(它们是不可见的,但仍然存在),一旦编码就会变成.

告诉我们您在何时/如何获得时间,或者在编码之前过滤时间字符串以删除这些字符.

标签:php,javascript,internet-explorer,urlencode,microsoft-edge
来源: https://codeday.me/bug/20190628/1313760.html