Javascript - encodeURI() 在不同的浏览器中返回不同的结果

标签 javascript php internet-explorer urlencode microsoft-edge

我使用 encodeURI() 对 php 请求 url 进行编码,它在 Firefox 和 Chrome 中工作得很好,但在 IE/Edge 中却不行。

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

Firefox 返回的是(有效): http://localhost/get.php?id=e_HO%20Event%201&title=HO%20Event%201&desc=This%20is%20just%20a%20test%20event%20of%20this%20handover%20only&stime=6/12/2015,%201:00:00%20AM&etime=10/12/2015,%201:00:00%20PM

IE 返回的内容(破解 php 代码): http://localhost/get.php?id=e_HO%20Event%201&title=HO%20Event%201&desc=This%20is%20just%20a%20test%20event%20of%20this%20handover%20only&stime=%E2% 80%8E6%E2%80%8E/%E2%80%8E12%E2%80%8E/%E2%80%8E2015%E2%80%8E%20%E2%80%8E1%E2%80%8E: %E2%80%8E00%E2%80%8E:%E2%80%8E00%E2%80%8E%20%E2%80%8EAM&etime=%E2%80%8E10%E2%80%8E/%E2% 80%8E12%E2%80%8E/%E2%80%8E2015%E2%80%8E%20%E2%80%8E1%E2%80%8E:%E2%80%8E00%E2%80%8E: %E2%80%8E00%E2%80%8E%20%E2%80%8EPM

我试图解码 IE 返回的内容,但它给我带来了很多问题!,那么是否有 encodeURI() 的替代方法?即使我不对 url 进行编码,FF 似乎也能工作,如果我复制,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" 字符(不可见,但仍然存在),一旦编码就变成 %E2%80%8E.

向我们展示您从何处/如何获得时间,或过滤时间字符串以在编码前删除这些字符。

关于Javascript - encodeURI() 在不同的浏览器中返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249656/

相关文章:

javascript - 如何使用 ng2-chart 创建数据标签?

javascript - javascript window.stop() 的反义词是什么

javascript - 使用ajax从php文件获取随机数不会更新新结果

php - 两个范围之间的MySQL查询

javascript - 在带 Angular d3 折线图中用实际值绘制趋势线

php - 我们如何与LinkedIn PHP API共享视频或您管链接?

javascript - Videojs 无法在 IE 9 及更高版本中工作

html - JSF 更改自动生成的元元素以允许使用 ssl 下载文件

jquery - IE7/8 jquery sortable 导致窗口捕捉到顶部

javascript - 如果选择了所有子节点,如何将父树节点标记为已选择